Module: Rails::Generators::Testing::Behavior
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::ActiveSupport::Concern
|
|
Instance Chain:
|
|
Defined in: | railties/lib/rails/generators/testing/behavior.rb |
Class Method Summary
::ActiveSupport::Concern
- Extended
class_methods | Define class methods from given block. |
included | Evaluate given block in context of base class, so that you can write class macros here. |
prepended | Evaluate given block in context of base class, so that you can write class macros here. |
append_features, prepend_features |
Instance Attribute Summary
- #destination_root_is_set? ⇒ Boolean readonly private
Instance Method Summary
-
#create_generated_attribute(attribute_type, name = "test", index = nil)
Create a
::Rails::Generators::GeneratedAttribute
by supplying the attribute type and, optionally, the attribute name: -
#generator(args = default_arguments, options = {}, config = {})
Instantiate the generator.
-
#run_generator(args = default_arguments, config = {})
Runs the generator configured for this class.
- #ensure_current_path private
- #migration_file_name(relative) private
-
#prepare_destination
private
Clears all files and directories in destination.
::ActiveSupport::Testing::Stream
- Included
DSL Calls
included
[ GitHub ]18 19 20 21 22 23 24 25
# File 'railties/lib/rails/generators/testing/behavior.rb', line 18
included do # Generators frequently change the current path using FileUtils.cd. # So we need to store the path at file load and revert back to it after each test. class_attribute :current_path, default: File. (Dir.pwd) class_attribute :default_arguments, default: [] class_attribute :destination_root class_attribute :generator_class end
Instance Attribute Details
#destination_root_is_set? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'railties/lib/rails/generators/testing/behavior.rb', line 94
def destination_root_is_set? raise "You need to configure your Rails::Generators::TestCase destination root." unless destination_root end
Instance Method Details
#create_generated_attribute(attribute_type, name = "test", index = nil)
Create a ::Rails::Generators::GeneratedAttribute
by supplying the attribute type and, optionally, the attribute name:
create_generated_attribute(:string, "name")
# File 'railties/lib/rails/generators/testing/behavior.rb', line 89
def create_generated_attribute(attribute_type, name = "test", index = nil) Rails::Generators::GeneratedAttribute.parse([name, attribute_type, index].compact.join(":")) end
#ensure_current_path (private)
[ GitHub ]# File 'railties/lib/rails/generators/testing/behavior.rb', line 98
def ensure_current_path cd current_path end
#generator(args = default_arguments, options = {}, config = {})
Instantiate the generator.
# File 'railties/lib/rails/generators/testing/behavior.rb', line 81
def generator(args = default_arguments, = {}, config = {}) @generator ||= generator_class.new(args, , config.reverse_merge(destination_root: destination_root)) end
#migration_file_name(relative) (private)
[ GitHub ]# File 'railties/lib/rails/generators/testing/behavior.rb', line 108
def migration_file_name(relative) absolute = File. (relative, destination_root) dirname, file_name = File.dirname(absolute), File.basename(absolute).delete_suffix(".rb") Dir.glob("#{dirname}/[0-9]*_*.rb").grep(/\d+_#{file_name}.rb$/).first end
#prepare_destination (private)
Clears all files and directories in destination.
# File 'railties/lib/rails/generators/testing/behavior.rb', line 103
def prepare_destination # :doc: rm_rf(destination_root) mkdir_p(destination_root) end
#run_generator(args = default_arguments, config = {})
Runs the generator configured for this class. The first argument is an array like command line arguments:
class AppGeneratorTest < Rails::Generators::TestCase
tests AppGenerator
destination File. ("../tmp", __dir__)
setup :prepare_destination
test "database.yml is not created when skipping Active Record" do
run_generator %w(myapp --skip-active-record)
assert_no_file "config/database.yml"
end
end
You can provide a configuration hash as second argument. This method returns the output printed by the generator.
# File 'railties/lib/rails/generators/testing/behavior.rb', line 67
def run_generator(args = default_arguments, config = {}) args += ["--skip-bundle"] unless args.include?("--no-skip-bundle") || args.include?("--dev") args += ["--skip-bootsnap"] unless args.include?("--no-skip-bootsnap") || args.include?("--skip-bootsnap") if ENV["RAILS_LOG_TO_STDOUT"] == "true" generator_class.start(args, config.reverse_merge(destination_root: destination_root)) else capture(:stdout) do generator_class.start(args, config.reverse_merge(destination_root: destination_root)) end end end