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.
- A
- B
- C
- G
- L
- R
- S
- T
- V
Constants
| DUMMY_IGNORE_OPTIONS | = | %i[dev edge master template] |
Instance Public methods
app() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 20 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 empty_directory_with_keep_file "app/models/concerns" empty_directory_with_keep_file "app/controllers/concerns" remove_dir "app/mailers" if options[:skip_action_mailer] remove_dir "app/jobs" if options[:skip_active_job] elsif full? empty_directory_with_keep_file "app/models" empty_directory_with_keep_file "app/controllers" empty_directory_with_keep_file "app/models/concerns" empty_directory_with_keep_file "app/controllers/concerns" empty_directory_with_keep_file "app/mailers" unless options[:skip_action_mailer] empty_directory_with_keep_file "app/jobs" unless options[:skip_active_job] 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
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 157 def assets_manifest template "rails/engine_manifest.js", "app/assets/config/#{underscored_name}_manifest.js" end
bin(force = false) Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 170 def bin(force = false) bin_file = engine? ? "bin/rails.tt" : "bin/test.tt" template bin_file, force: force do |content| "#{shebang}\n" + content end chmod "bin", 0755, verbose: false end
config() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 87 def config template "config/routes.rb" if engine? end
gemfile() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 53 def gemfile template "Gemfile" end
gemfile_entry() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 178 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
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 61 def gemspec template "%name%.gemspec" end
generate_test_dummy(force = false) Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 112 def generate_test_dummy(force = false) opts = options.transform_keys(&:to_sym).except(*DUMMY_IGNORE_OPTIONS) opts[:force] = force opts[:skip_bundle] = true opts[:skip_git] = true opts[:skip_hotwire] = true opts[:dummy_app] = true invoke Rails::Generators::AppGenerator, [ File.expand_path(dummy_path, destination_root) ], opts end
gitignore() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 65 def gitignore template "gitignore", ".gitignore" end
lib() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 75 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
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 57 def license template "MIT-LICENSE" unless inside_application? end
rakefile() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 16 def rakefile template "Rakefile" end
readme() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 49 def readme template "README.md" end
stylesheets() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 161 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
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 91 def test template "test/test_helper.rb" template "test/%namespaced_name%_test.rb" if engine? empty_directory_with_keep_file "test/fixtures/files" empty_directory_with_keep_file "test/controllers" empty_directory_with_keep_file "test/mailers" empty_directory_with_keep_file "test/models" empty_directory_with_keep_file "test/integration" unless api? empty_directory_with_keep_file "test/helpers" end template "test/integration/navigation_test.rb" end end
test_dummy_clean() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 144 def test_dummy_clean inside dummy_path do remove_file ".ruby-version" 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
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 124 def test_dummy_config template "rails/boot.rb", "#{dummy_path}/config/boot.rb", force: true if mountable? template "rails/routes.rb", "#{dummy_path}/config/routes.rb", force: true end if engine? && !api? insert_into_file "#{dummy_path}/config/application.rb", indent(<<~RUBY, 4), after: /^\s*config\.load_defaults.*\n/ # For compatibility with applications that use this config config.action_controller.include_all_helpers = false RUBY end end
test_dummy_sprocket_assets() Link
Source: show
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 139 def test_dummy_sprocket_assets 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