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
- L
- R
- S
- T
Constants
PASSTHROUGH_OPTIONS | = | [ :skip_active_record, :skip_active_storage, :skip_action_mailer, :skip_javascript, :skip_action_cable, :skip_sprockets, :database, :api, :quiet, :pretend, :skip ] |
Instance Public methods
app()
Link
# File rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 19 def app if mountable? if api? directory "app", exclude_pattern: %r{app/(views|helpers)} else directory "app" empty_directory_with_keep_file "app/assets/images/#{namespaced_name}" end elsif full? empty_directory_with_keep_file "app/models" empty_directory_with_keep_file "app/controllers" empty_directory_with_keep_file "app/mailers" unless api? empty_directory_with_keep_file "app/assets/images/#{namespaced_name}" empty_directory_with_keep_file "app/helpers" empty_directory_with_keep_file "app/views" end end end
assets_manifest()
Link
bin(force = false)
Link
config()
Link
gemfile()
Link
gemfile_entry()
Link
# File rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 155 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 = "\ngem '#{name}', path: '#{relative_path}'" append_file gemfile_in_app_path, entry end end
gemspec()
Link
generate_test_dummy(force = false)
Link
# File rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 94 def generate_test_dummy(force = false) opts = (options.dup || {}).keep_if { |k, _| PASSTHROUGH_OPTIONS.map(&:to_s).include?(k) } opts[:force] = force opts[:skip_bundle] = true opts[:skip_listen] = true opts[:skip_git] = true opts[:skip_turbolinks] = true opts[:skip_webpack_install] = true opts[:dummy_app] = true invoke Rails::Generators::AppGenerator, [ File.expand_path(dummy_path, destination_root) ], opts end
gitignore()
Link
lib()
Link
# File rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 60 def lib template "lib/%namespaced_name%.rb" template "lib/tasks/%namespaced_name%_tasks.rake" template "lib/%namespaced_name%/version.rb" if engine? template "lib/%namespaced_name%/engine.rb" else template "lib/%namespaced_name%/railtie.rb" end end
license()
Link
rakefile()
Link
readme()
Link
stylesheets()
Link
# File rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 138 def stylesheets if mountable? copy_file "rails/stylesheets.css", "app/assets/stylesheets/#{namespaced_name}/application.css" elsif full? empty_directory_with_keep_file "app/assets/stylesheets/#{namespaced_name}" end end
test()
Link
# File rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 76 def test template "test/test_helper.rb" template "test/%namespaced_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()
Link
# File rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 116 def test_dummy_assets template "rails/javascripts.js", "#{dummy_path}/app/javascript/packs/application.js", force: true template "rails/stylesheets.css", "#{dummy_path}/app/assets/stylesheets/application.css", force: true template "rails/dummy_manifest.js", "#{dummy_path}/app/assets/config/manifest.js", force: true end
test_dummy_clean()
Link
# File rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 122 def test_dummy_clean inside dummy_path do remove_file "db/seeds.rb" remove_file "Gemfile" remove_file "lib/tasks" remove_file "public/robots.txt" remove_file "README.md" remove_file "test" remove_file "vendor" end end
test_dummy_config()
Link
# File rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 108 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