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 | |
| 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. | 
Instance Method Summary
- 
    
      #create_generated_attribute(attribute_type, name = "test", index = nil)  
    
    Create a ::Rails::Generators::GeneratedAttributeby 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. 
- 
    
      #prepare_destination  
    
    private
    Clears all files and directories in destination. 
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 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
#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
#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
endYou 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