Грешка при инсталиране на Spree ActiveRecord::ConnectionNotEstablished

Исках да създам онлайн магазин, използвайки релси и spree gem (http://spreecommerce.com/).

Оставяйки разработката на rails за известно време на моя mac (os x lion), инсталирах всичко от нулата, използвайки това ръководство: http://tecparatodos.com/2011/07/24/installing-ruby-on-rails-on-mac-os-x-lion/ и mysql с brew.

Следвах и „Документа за започване на работа“ на Spree http://guides.spreecommerce.com/getting_started.html

Възникналият проблем е, че използването на mysql, след конфигуриране на базата данни и напр. правейки а

rake db:create

Винаги получавам грешката ActiveRecord::ConnectionNotEstablished. Първо си помислих, че е свързано с моята инсталация на mysql, но след часове на проверка и преинсталация разбрах, че всъщност е заради скъпоценния камък на spree. Всеки път, когато добавя "gem 'spree'" към моя Gemfile, възниква тази грешка. Когато го премахна и направя "пакетно инсталиране", всичко работи добре. Имам известен опит с релси в проекти за изглед, но Spree е нещо ново за мен. Някаква идея какъв може да е проблемът?

Моята база данни.yml:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: asiashop_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: asiashop_test
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: asiashop_production
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

И stracktrace, когато правя "rails c":

/Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.0.rc2/lib/active_record/connection_adapters/abstract/connection_pool.rb:374:in `retrieve_connection': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.0.rc2/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.0.rc2/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.0.rc2/lib/active_record/model_schema.rb:224:in `columns'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.0.rc2/lib/active_record/model_schema.rb:244:in `column_names'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/rd_searchlogic-3.0.1/lib/searchlogic/named_scopes/ordering.rb:61:in `ordering_condition_details'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/rd_searchlogic-3.0.1/lib/searchlogic/named_scopes/ordering.rb:52:in `method_missing'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/spree_core-0.40.0/lib/spree_core/find_by_param.rb:105:in `<class:Base>'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/spree_core-0.40.0/lib/spree_core/find_by_param.rb:104:in `<top (required)>'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.2.0.rc2/lib/active_support/dependencies.rb:251:in `require'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.2.0.rc2/lib/active_support/dependencies.rb:251:in `block in require'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.2.0.rc2/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.2.0.rc2/lib/active_support/dependencies.rb:251:in `require'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/spree_core-0.40.0/lib/spree_core.rb:47:in `<top (required)>'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/spree-0.40.0/lib/spree.rb:1:in `require'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/spree-0.40.0/lib/spree.rb:1:in `<top (required)>'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler.rb:122:in `require'
    from /Users/mark/Documents/Workspace/Asia Testshop/asiashop/config/application.rb:7:in `<top (required)>'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.0.rc2/lib/rails/commands.rb:39:in `require'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.0.rc2/lib/rails/commands.rb:39:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Както писах, това не може да е общ проблем с mysql връзката, защото всичко работи добре, стига да не използвам spree gem.


person Mark    schedule 16.01.2012    source източник
comment
Можете ли да предоставите по-голямо проследяване на стека за този проблем? Как конфигурирахте своя config/database.yml? Трябва да сте направили нещо различно, тъй като приложението на Rails идва със sqlite3 по подразбиране.   -  person Ryan Bigg    schedule 17.01.2012
comment
Използвам mysql, който работи без проблем, стига да не използвам spree gem. Добавих stracktrace и моята база данни.yml по-горе. Мерси!   -  person Mark    schedule 17.01.2012


Отговори (2)


Трябва да добавите Spree като скъпоценен камък към вашия Gemfile по този начин:

gem 'spree', '0.70.3'

Това ще инсталира най-новата стабилна версия на Spree. Проблемът изглежда е, че Bundler избира много стара версия (0.40.0) на Spree за изпълнение, което е просто грешно.

person Ryan Bigg    schedule 25.01.2012
comment
не се ли инсталира най-новата версия на gem по подразбиране? - person Lavixu; 01.08.2013
comment
@Lavixu не, ако спецификациите за зависимост от скъпоценни камъни на други скъпоценни камъни изискват нещо различно от най-новото. Правейки gem 'spree' просто означава, че искам всяка версия на Spree - person Ryan Bigg; 01.08.2013

Не мога да определя точно източника на проблема, но след като деинсталирах всички скъпоценни камъни и след това ги инсталирах отново от нулата, успях да заработя..

person Mark    schedule 17.01.2012