edge badge

The plugin builder allows you to override elements of the plugin generator without being forced to reverse the operations of the default generator.

This allows you to override entire operations, like the creation of the Gemfile, README, or JavaScript files, without needing to know exactly what those operations do so you can create another template action.

Methods
A
B
C
G
J
L
R
S
T
Constants
PASSTHROUGH_OPTIONS = [ :skip_active_record, :skip_javascript, :database, :javascript, :quiet, :pretend, :force, :skip ]
 
Instance Public methods
app()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 18
def app
  if mountable?
    directory 'app'
    empty_directory_with_keep_file "app/assets/images/#{name}"
  elsif full?
    empty_directory_with_keep_file 'app/models'
    empty_directory_with_keep_file 'app/controllers'
    empty_directory_with_keep_file 'app/views'
    empty_directory_with_keep_file 'app/helpers'
    empty_directory_with_keep_file 'app/mailers'
    empty_directory_with_keep_file "app/assets/images/#{name}"
  end
end
bin(force = false)
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 136
def bin(force = false)
  return unless engine?

  directory "bin", force: force do |content|
    "#{shebang}\n" + content
  end
  chmod "bin", 0755, verbose: false
end
config()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 59
def config
  template "config/routes.rb" if engine?
end
gemfile()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 36
def gemfile
  template "Gemfile"
end
gemfile_entry()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 145
def gemfile_entry
  return unless inside_application?

  gemfile_in_app_path = File.join(rails_app_path, "Gemfile")
  if File.exist? gemfile_in_app_path
    entry = "gem '#{name}', path: '#{relative_path}'"
    append_file gemfile_in_app_path, entry
  end
end
gemspec()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 44
def gemspec
  template "%name%.gemspec"
end
generate_test_dummy(force = false)
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 80
def generate_test_dummy(force = false)
  opts = (options || {}).slice(*PASSTHROUGH_OPTIONS)
  opts[:force] = force
  opts[:skip_bundle] = true

  invoke Rails::Generators::AppGenerator,
    [ File.expand_path(dummy_path, destination_root) ], opts
end
gitignore()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 48
def gitignore
  template "gitignore", ".gitignore"
end
javascripts()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 125
def javascripts
  return if options.skip_javascript?

  if mountable?
    template "rails/javascripts.js",
             "app/assets/javascripts/#{name}/application.js"
  elsif full?
    empty_directory_with_keep_file "app/assets/javascripts/#{name}"
  end
end
lib()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 52
def lib
  template "lib/%name%.rb"
  template "lib/tasks/%name%_tasks.rake"
  template "lib/%name%/version.rb"
  template "lib/%name%/engine.rb" if engine?
end
license()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 40
def license
  template "MIT-LICENSE"
end
rakefile()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 14
def rakefile
  template "Rakefile"
end
readme()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 32
def readme
  template "README.rdoc"
end
stylesheets()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 116
def stylesheets
  if mountable?
    copy_file "rails/stylesheets.css",
              "app/assets/stylesheets/#{name}/application.css"
  elsif full?
    empty_directory_with_keep_file "app/assets/stylesheets/#{name}"
  end
end
test()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 63
    def test
      template "test/test_helper.rb"
      template "test/%name%_test.rb"
      append_file "Rakefile", <<-EOF
#{rakefile_test_tasks}

task default: :test
      EOF
      if engine?
        template "test/integration/navigation_test.rb"
      end
    end
test_dummy_assets()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 97
def test_dummy_assets
  template "rails/javascripts.js",  "#{dummy_path}/app/assets/javascripts/application.js", force: true
  template "rails/stylesheets.css", "#{dummy_path}/app/assets/stylesheets/application.css", force: true
end
test_dummy_clean()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 102
def test_dummy_clean
  inside dummy_path do
    remove_file ".gitignore"
    remove_file "db/seeds.rb"
    remove_file "doc"
    remove_file "Gemfile"
    remove_file "lib/tasks"
    remove_file "public/robots.txt"
    remove_file "README"
    remove_file "test"
    remove_file "vendor"
  end
end
test_dummy_config()
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 89
def test_dummy_config
  template "rails/boot.rb", "#{dummy_path}/config/boot.rb", force: true
  template "rails/application.rb", "#{dummy_path}/config/application.rb", force: true
  if mountable?
    template "rails/routes.rb", "#{dummy_path}/config/routes.rb", force: true
  end
end