Class: Rails::PluginBuilder
Relationships & Source Files | |
Inherits: | Object |
Defined in: | railties/lib/rails/generators/rails/plugin/plugin_generator.rb |
Overview
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.
Constant Summary
-
PASSTHROUGH_OPTIONS =
# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 76[ :skip_active_record, :skip_javascript, :database, :javascript, :quiet, :pretend, :force, :skip ]
Instance Method Summary
Instance Method Details
#app
[ GitHub ]# 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)
[ GitHub ]# 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
[ GitHub ]# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 59
def config template "config/routes.rb" if engine? end
#gemfile
[ GitHub ]# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 36
def gemfile template "Gemfile" end
#gemfile_entry
[ GitHub ]# 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
[ GitHub ]# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 44
def gemspec template "%name%.gemspec" end
#generate_test_dummy(force = false)
[ GitHub ]# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 80
def generate_test_dummy(force = false) opts = ( || {}).slice(*PASSTHROUGH_OPTIONS) opts[:force] = force opts[:skip_bundle] = true invoke Rails::Generators::AppGenerator, [ File. (dummy_path, destination_root) ], opts end
#gitignore
[ GitHub ]# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 48
def gitignore template "gitignore", ".gitignore" end
#javascripts
[ GitHub ]# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 125
def javascripts return if .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
[ GitHub ]# 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
[ GitHub ]# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 40
def license template "MIT-LICENSE" end
#rakefile
[ GitHub ]# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 14
def rakefile template "Rakefile" end
#readme
[ GitHub ]# File 'railties/lib/rails/generators/rails/plugin/plugin_generator.rb', line 32
def readme template "README.rdoc" end
#stylesheets
[ GitHub ]# 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
[ GitHub ]# 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
[ GitHub ]# 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
[ GitHub ]# 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
[ GitHub ]# 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