Module: Rails::Generators::Testing::Behaviour
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::ActiveSupport::Concern
|
|
Defined in: | railties/lib/rails/generators/testing/behaviour.rb |
Class Method Summary
::ActiveSupport::Concern - Extended
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 = self.default_arguments, options = {}, config = {})
Instantiate the generator.
-
#run_generator(args = self.default_arguments, config = {})
Runs the generator configured for this class.
DSL Calls
included
[ GitHub ]14 15 16 17 18 19 20 21
# File 'railties/lib/rails/generators/testing/behaviour.rb', line 14
included do class_attribute :destination_root, :current_path, :generator_class, :default_arguments # 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. self.current_path = File. (Dir.pwd) self.default_arguments = [] 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/behaviour.rb', line 79
def create_generated_attribute(attribute_type, name = 'test', index = nil) Rails::Generators::GeneratedAttribute.parse([name, attribute_type, index].compact.join(':')) end
#generator(args = self.default_arguments, options = {}, config = {})
Instantiate the generator.
# File 'railties/lib/rails/generators/testing/behaviour.rb', line 71
def generator(args=self.default_arguments, ={}, config={}) @generator ||= self.generator_class.new(args, , config.reverse_merge(destination_root: destination_root)) end
#run_generator(args = self.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", File.dirname(__FILE__))
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/behaviour.rb', line 63
def run_generator(args=self.default_arguments, config={}) capture(:stdout) do args += ['--skip-bundle'] unless args.include? '--dev' self.generator_class.start(args, config.reverse_merge(destination_root: destination_root)) end end