1

テストのために、Factory_girl を Rails アプリに入れようとしています。

Gemfile の一部を次に示します。

gem 'rspec-rails', :group => [:development, :test]

group :development do
  gem 'annotate'
  gem 'faker', '0.3.1', :require => false
  gem 'populator', '1.0.0'
  gem 'ruby-debug19'
end

group :test do
  gem "capybara"
  gem 'factory_girl_rails', '~> 3.5.0'
  gem 'guard-rspec'
  gem 'guard-spork'
  gem 'spork'
  gem 'rb-inotify'
  gem 'libnotify'
end

group :development, :test do
  gem 'sqlite3-ruby', :require=>'sqlite3'
end

次に、コンソールで Factory_Girl のインストールをテストします。たとえばrails c、メソッドを呼び出すには:find_definitions

Loading development environment (Rails 3.0.5)
irb(main):002:0> FactoryGirl.find_definitions
NameError: uninitialized constant FactoryGirl
    from (irb):2
    from /var/lib/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands/console.rb:44:in     `start'
    from /var/lib/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands/console.rb:8:in     `start'
    from /var/lib/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:23:in `<top         (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

だから私は宝石を必要とする必要があると仮定します:私はそうします:

irb(main):003:0> require 'factory_girl_rails'
SystemStackError: stack level too deep
    from /usr/lib/ruby/1.9.1/irb/workspace.rb:80
Maybe IRB bug!!

この奇妙なエラーが発生しました。

私は何を間違っていますか?

情報については、Rails 3.0.5 と ruby​​ 1.9.2 を使用しています。

宝石の設定は次のとおりです。

RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [i686-linux]
- INSTALLATION DIRECTORY: /var/lib/gems/1.9.1
- RUBY EXECUTABLE: /usr/bin/ruby1.9.1
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86-linux
- GEM PATHS:
   - /var/lib/gems/1.9.1
   - /home/izambard/.gem/ruby/1.9.1
 - GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
4

2 に答える 2

2

テスト環境に FactoryGirl を含めながら、開発環境を実行しています。テスト環境でコンソールを実行すると、FactoryGirl が含まれます。

RAILS_ENV=test rails c

require 'factory_girl_rails'開発中に無限再帰が発生する理由がよくわかりません。factory girl のバグか古い Rails バージョンの可能性があります。

于 2012-07-06T08:56:00.220 に答える
1

実際、factory_girl_railsspec_helper.rb と factory.rb ファイルに require がありました。factory.rb の 1 つを削除すると、現在は機能しています... :-s

于 2012-07-08T18:53:18.980 に答える