2

私はスプリーとリファイナリーを、次の目的で一緒にセットアップしようと試みてきました: 両方に同じ認証システムを使用します。

githubプロジェクトとそれに続くスプリーマスターブランチへのプルによると...これはスムーズに進むはずです(最初の回答のコメントにリンクがあります)

頑張ってみましたが、「初期化されていない定数ユーザー」エラーを取り除くことができません。エラーを再現できるようにするために必要なすべての手順について説明します。

Firstofall、環境 :

gem install rails
rails new spreefinery
cd spreefinery

# resolve a dependency on which bundler fails
sed "s/'jquery-rails'/'jquery-rails', '~>2.0.0'/g" -i Gemfile 

echo "# adding custom gems for both spree and refinery
gem 'spree', :git => 'git://github.com/spree/spree.git', :branch => '1-2-stable'
gem 'spree_usa_epay'
gem 'spree_skrill'
gem 'refinerycms', :git => 'git://github.com/refinery/refinerycms.git', :branch => '2-0-stable'" >> Gemfile

bundle install

次に、ガイドに示されているようにリファイナリをインストールします

rails generate refinery:cms --fresh-installation

ページネーションのパッチ付き

echo "#Refinery uses the will_paginate gem for pagination, 
# while Spree uses Kaminari.... This fix makes both happy

if defined?(WillPaginate)
  module WillPaginate
    module ActiveRecord
      module RelationMethods
        alias_method :per, :per_page
        alias_method :num_pages, :total_pages
      end
    end 
  end
end" > config/initializers/spreefinery.rb

最終的に、インストールまくる(認証なし)

bundle exec spree install --git=git://github.com/spree/spree.git --branch=1-2-stable

# use default config except for authentification :
  Would you like to install the default gateways? (yes/no) [yes] 
  Would you like to install the default authentication system? (yes/no) [yes] no
  What is the name of the class representing users within your application? [User] 
  Would you like to run the migrations? (yes/no) [yes] 
  Would you like to load the seed data? (yes/no) [yes] 
  Would you like to load the sample data? (yes/no) [yes] 

この最後のコマンドは次のように実行されます。

 gemfile  spree
 gemfile  spree_usa_epay
 gemfile  spree_skrill
     run  bundle install from "."
  create  config/initializers/spree.rb
  create  config/spree.yml
  remove  public/index.html
  append  public/robots.txt
  create  app/assets/javascripts/store
  create  app/assets/javascripts/admin
  create  app/assets/stylesheets/store
  create  app/assets/stylesheets/admin
  create  app/assets/images/store
  create  app/assets/images/admin
  create  app/assets/javascripts/store/all.js
  create  app/assets/javascripts/admin/all.js
  create  app/assets/stylesheets/store/all.css
  create  app/assets/stylesheets/admin/all.css
  create  app/overrides
  append  config/environment.rb
  append  db/seeds.rb
 copying  migrations
creating  database
 running  migrations
 loading  seed data
    rake  db:seed 
rake aborted!
uninitialized constant User

Tasks: TOP => db:abort_if_pending_migrations => environment
(See full trace by running task with --trace)
     loading  sample data
      insert  config/routes.rb
**************************************************
We added the following line to your application's config/routes.rb file:

mount Spree::Core::Engine, :at => '/'
**************************************************
Spree has been installed successfully. You're all ready to go!

Enjoy!

db:seed ステップでエラーを確認できます。

Railsサーバーまたはrake db:migrateで同じエラーが再び発生します。完全なトレースバックは次のとおりです。

rake db:migrate --trace
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
uninitialized constant User
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/activesupport-3.2.8/lib/active_support/inflector/methods.rb:230:in `block in constantize'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/activesupport-3.2.8/lib/active_support/inflector/methods.rb:229:in `each'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/activesupport-3.2.8/lib/active_support/inflector/methods.rb:229:in `constantize'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/activesupport-3.2.8/lib/active_support/core_ext/string/inflections.rb:54:in `constantize'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/bundler/gems/spree-dbb0c56a60a9/core/lib/spree/core.rb:52:in `user_class'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/bundler/gems/spree-dbb0c56a60a9/promo/app/models/spree/promotion/rules/user.rb:7:in `<class:User>'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/bundler/gems/spree-dbb0c56a60a9/promo/app/models/spree/promotion/rules/user.rb:4:in `<module:Rules>'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/bundler/gems/spree-dbb0c56a60a9/promo/app/models/spree/promotion/rules/user.rb:3:in `<class:Promotion>'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/bundler/gems/spree-dbb0c56a60a9/promo/app/models/spree/promotion/rules/user.rb:2:in `<module:Spree>'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/bundler/gems/spree-dbb0c56a60a9/promo/app/models/spree/promotion/rules/user.rb:1:in `<top (required)>'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/bundler/gems/spree-dbb0c56a60a9/promo/lib/spree/promo/engine.rb:44:in `block in <class:Engine>'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/railties-3.2.8/lib/rails/initializable.rb:30:in `instance_exec'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/railties-3.2.8/lib/rails/initializable.rb:30:in `run'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/railties-3.2.8/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/railties-3.2.8/lib/rails/initializable.rb:54:in `each'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/railties-3.2.8/lib/rails/initializable.rb:54:in `run_initializers'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/railties-3.2.8/lib/rails/application.rb:136:in `initialize!'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/railties-3.2.8/lib/rails/railtie/configurable.rb:30:in `method_missing'
/Users/emb/Documents/envs/spreefinery/config/environment.rb:5:in `<top (required)>'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `require'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `require'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/railties-3.2.8/lib/rails/application.rb:103:in `require_environment!'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/gems/railties-3.2.8/lib/rails/application.rb:295:in `block (2 levels) in initialize_tasks'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/Users/emb/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain'
/Users/emb/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/bin/rake:19:in `load'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@global/bin/rake:19:in `<main>'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/bin/ruby_noexec_wrapper:14:in `eval'
/Users/emb/.rvm/gems/ruby-1.9.3-p194@spreefinery/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => db:migrate => environment

この時点で助けが必要です。モデル User が存在しない可能性があることを示すこのエラーに関するいくつかの投稿を見つけました...しかし、リファイナリーは明確にUser クラスを宣言します...そのため、少し混乱しています。

ご協力いただきありがとうございます !マヌー

4

2 に答える 2

2

ついにそれを手に入れました、そしてそれはとても簡単に見えます.... mmmfff

そのため、ユーザーに関する質問に「Refinery::User」 (単に「User」ではなく)を指定する必要がありました。

Would you like to install the default gateways? (yes/no) [yes] 
Would you like to install the default authentication system? (yes/no) [yes] no
What is the name of the class representing users ...? [User] **Refinery::User**
Would you like to run the migrations? (yes/no) [yes] 
Would you like to load the seed data? (yes/no) [yes] 
Would you like to load the sample data? (yes/no) [yes] 

とても論理的です:)

于 2012-09-12T19:55:21.907 に答える
0

spree をインストールして標準の移行を実行しようとしていますが、あなたのエントリから、spree に付属するデフォルトの認証システムをインストールしないと明示的に述べていることがわかります (refinery のように、devise に基づいています)。そのため、ユーザー モデルで実行される移行の一部が失敗しています。

> bundle exec spree install --git=git://github.com/spree/spree.git
> --branch=1-2-stable
> 
    > use default config except for authentification :   Would you like to install the default gateways? (yes/no) [yes]    Would you like to
    > install the default authentication system? (yes/no) [yes] no   What is
    > the name of the class representing users within your application?
    > [User]    Would you like to run the migrations? (yes/no) [yes]   
    > Would you like to load the seed data? (yes/no) [yes]    Would you like
    > to load the sample data? (yes/no) [yes]

もう一度インストールしようとして、今回は「デフォルトの認証システムをインストールしますか?」に「はい」と答えた場合。それならうまくいくはずです。私は今週、同様のシステムに取り組んでおり、うまく機能しています。db に 2 つの名前空間を持つユーザー db テーブルを取得しますが、両方のシステムで単一の認証システムを共有する場合は、何らかの作業が必要であり、標準のインストーラーは適用できないと思います。

于 2012-09-07T08:47:40.817 に答える