2015-07-23 2 views
0

я команда запуска тест грабель: подготовка и ошибка отображения:Rails 3.2 - Uninitialized константы FactoryGirl (Name Error)

NameError: неинициализированная постоянная FactoryGirl /дома/дима/MyApp/bdsmgalaxy/спецификация/фабрики/polls.rb: 3: в <top (required)>' /home/dima/myapp/bdsmgalaxy/config/environment.rb:5:in ' задачи: TOP => тест: подготовка => дб: тест: подготовка => дб: abort_if_pending_migrations => среда (полный след, выполнив задачу с --trace)

У меня есть Rails версия 3.2

Сво мои настройки RSpec и фабрики

заводы/polls.rb

# Read about factories at http://github.com/thoughtbot/factory_girl 

FactoryGirl.define do 

    factory :poll_item do 
    answer "Ruby" 
    end 

    factory :poll do 
    question "What programming language are you using?" 
    results_hidden 1 
    from_date "2015-06-25 18:13:18" 
    to_date "2015-07-25 18:13:18" 

    trait :poll_item1 do 
     association :poll_item, answer: "C#" 
    end 

    trait :poll_item2 do 
     association :poll_item, answer: "Ruby" 
    end 

    factory :poll_with_item1, traits: [:poll_item1, :poll_item2] 
    factory :poll_with_item2, traits: [:poll_item2] 
    end 
end 

Gemfile:

group :development, :test do 
    gem 'rspec-rails',  '2.5.0' 
    gem 'factory_girl',  '1.3.3' 
    gem 'factory_girl_rails', '1.0.1' 
    gem 'rails3-generators', '0.17.4' 
    gem 'timecop',   '0.3.5' 
    gem 'quiet_assets' 
end 

spec_helper.rb:

# This file is copied to spec/ when you run 'rails generate rspec:install' 
ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'authlogic/test_case' 
require 'factory_girl_rails' 


# Requires supporting ruby files with custom matchers and macros, etc, 
# in spec/support/ and its subdirectories. 
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 
    config.include FactoryGirl::Syntax::Methods 

    # == Mock Framework 
    # 
    # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: 
    # 
    # config.mock_with :mocha 
    # config.mock_with :flexmock 
    # config.mock_with :rr 
    config.mock_with :rspec 

    # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 

    # If you're not using ActiveRecord, or you'd prefer not to run each of your 
    # examples within a transaction, remove the following line or assign false 
    # instead of true. 
    config.use_transactional_fixtures = true 

    config.include Authlogic::TestCase 


end 

Applicati on.rb:

require File.expand_path('../boot', __FILE__) 

require 'rails/all' 

if defined?(Bundler) 
    # If you precompile assets before deploying to production, use this line 
    Bundler.require(*Rails.groups(:assets => %w(development test))) 
    # If you want your assets lazily compiled in production, use this line 
    # Bundler.require(:default, :assets, Rails.env) 
end 

module Bdsmgalaxy 
    class Application < Rails::Application 
    config.autoload_paths += %W(#{config.root}/lib) 
    config.autoload_paths += %W(#{config.root}/app/workers) 
    config.autoload_paths += Dir["#{config.root}/lib/**/"] 
    config.time_zone = 'Moscow' 
    config.i18n.locale = :ru 
    config.i18n.default_locale = :ru 
    config.encoding = "utf-8" 
    config.action_dispatch.default_charset = "utf-8" 

    config.filter_parameters += [:password] 

    config.assets.enabled = true 
    config.assets.version = '1.0' 
    config.assets.paths << Rails.root.join("app", "assets", "flash") 
    config.assets.paths << Rails.root.join("app", "assets", "fonts") 

    config.assets.precompile += %w(snow.css w.css w.js swfobject.js hw.css chatroom.js) 
    #config.assets.precompile += %w(tinymce/skins/charcoal/skin.min.css tinymce/skins/charcoal/content.min.css) 

    config.app_generators do |g| 
     g.template_engine :haml 
     g.test_framework :rspec, :fixture => true, :views => false 
     g.fixture_replacement :factory_girl, :dir => 'spec/factories' 
    end 
    end 
end 

Squeel.configure do |config| 
    config.load_core_extensions :symbol 
end 

Почему отображается сообщение об ошибке с постоянной FacroryGirl если я добавил требуют factory_girl_rails? Как я решаю эту проблему?

Спасибо за продвижение.

EDIT

тест грабли: подготовить --trace:

[email protected]:~/myapp/bdsmgalaxy$ rake test:prepare --trace 
** Invoke test:prepare (first_time) 
** Invoke db:test:prepare (first_time) 
** Invoke db:abort_if_pending_migrations (first_time) 
** Invoke environment (first_time) 
** Execute environment 

Sphinx cannot be found on your system. You may need to configure the following 
settings in your config/sphinx.yml file: 
    * bin_path 
    * searchd_binary_name 
    * indexer_binary_name 


For more information, read the documentation: 
http://pat.github.com/ts/en/advanced_config.html 

rake aborted! 
NameError: uninitialized constant FactoryGirl 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rspec-core-2.5.2/lib/rspec/core/backward_compatibility.rb:20:in `const_missing' 
/home/dima/myapp/bdsmgalaxy/spec/factories/polls.rb:3:in `<top (required)>' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/factory_girl-1.3.3/lib/factory_girl/factory.rb:314:in `block (2 levels) in find_definitions' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/factory_girl-1.3.3/lib/factory_girl/factory.rb:313:in `each' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/factory_girl-1.3.3/lib/factory_girl/factory.rb:313:in `block in find_definitions' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/factory_girl-1.3.3/lib/factory_girl/factory.rb:308:in `each' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/factory_girl-1.3.3/lib/factory_girl/factory.rb:308:in `find_definitions' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/factory_girl_rails-1.0.1/lib/factory_girl_rails/railtie.rb:11:in `block in <class:Railtie>' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-3.2.22/lib/active_support/lazy_load_hooks.rb:34:in `call' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-3.2.22/lib/active_support/lazy_load_hooks.rb:34:in `execute_hook' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-3.2.22/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-3.2.22/lib/active_support/lazy_load_hooks.rb:42:in `each' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activesupport-3.2.22/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/application/finisher.rb:59:in `block in <module:Finisher>' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/initializable.rb:30:in `instance_exec' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/initializable.rb:30:in `run' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/initializable.rb:55:in `block in run_initializers' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/initializable.rb:54:in `each' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/initializable.rb:54:in `run_initializers' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/application.rb:136:in `initialize!' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/railtie/configurable.rb:30:in `method_missing' 
/home/dima/myapp/bdsmgalaxy/config/environment.rb:5:in `<top (required)>' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/application.rb:103:in `require_environment!' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-3.2.22/lib/rails/application.rb:305:in `block (2 levels) in initialize_tasks' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `call' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `block in execute' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `each' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `execute' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:201:in `block in invoke_prerequisites' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:199:in `each' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:199:in `invoke_prerequisites' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:178:in `block in invoke_with_call_chain' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:201:in `block in invoke_prerequisites' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:199:in `each' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:199:in `invoke_prerequisites' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:178:in `block in invoke_with_call_chain' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:201:in `block in invoke_prerequisites' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:199:in `each' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:199:in `invoke_prerequisites' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:178:in `block in invoke_with_call_chain' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:165:in `invoke' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:150:in `invoke_task' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block (2 levels) in top_level' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `each' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block in top_level' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:115:in `run_with_threads' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:100:in `top_level' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:78:in `block in run' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:75:in `run' 
/home/dima/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.4.2/bin/rake:33:in `<top (required)>' 
/home/dima/.rbenv/versions/2.0.0-p247/bin/rake:23:in `load' 
/home/dima/.rbenv/versions/2.0.0-p247/bin/rake:23:in `<main>' 
Tasks: TOP => test:prepare => db:test:prepare => db:abort_if_pending_migrations => environment 

Когда я изменяю из FactoryGirl.define сделать ... в Factory.define сделать ..., ошибка дисплея

/home/dima/.rbenv/versions/ 2.0.0-p247/lib/ruby ​​/ gems/2.0.0/gems/factory_girl-1.3.3/lib/factory_girl/factory.rb: 54: in define': wrong number of arguments (0 for 1..2) (ArgumentError) from /home/dima/myapp/bdsmgalaxy/spec/factories/polls.rb:3:in '

+0

Это невинный вопрос, но вы уверены, что используете команду 'bundle install'? Какая версия 'Gemfile.lock' говорит, что она установлена? – mrodrigues

+0

конечно. в gemfile.lock - factory_girl (1.3.3) factory_girl_rails (1.0.1) factory_girl (~> 1.3) railties (> = 3.0.0) –

+0

Попробовали ли вы потребовать 'factory_girl'? Попробуйте добавить, что для этой строки требуется «factory_girl_rails» – eboswort

ответ

1

Я основал решение. Я обновил версию gem factory_girl-rails с 1.1 до 3.0. В старой версии используется старый синтаксис.

Смежные вопросы