跳至內容 跳至搜尋
名稱空間
方法
C
G
P
R

實體公開方法

create_generated_attribute(attribute_type, name = "test", index = nil)

透過提供屬性類型,以及(選擇性)提供屬性名稱,來建立 Rails::Generators::GeneratedAttribute

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 = {})

實例化產生器。

# File railties/lib/rails/generators/testing/behavior.rb, line 81
def generator(args = default_arguments, options = {}, config = {})
  @generator ||= generator_class.new(args, options, config.reverse_merge(destination_root: destination_root))
end

run_generator(args = default_arguments, config = {})

執行為此類別設定的產生器。第一個參數是類似於命令列參數的陣列

class AppGeneratorTest < Rails::Generators::TestCase
  tests AppGenerator
  destination File.expand_path("../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

你可以提供設定雜湊作為第二個參數。此方法會傳回產生器列印的輸出。

# 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

實體私用方法

prepare_destination()

清除目標中的所有檔案與目錄。

# File railties/lib/rails/generators/testing/behavior.rb, line 103
def prepare_destination # :doc:
  rm_rf(destination_root)
  mkdir_p(destination_root)
end