2012年09月22日 padrinoとmongoid 3.0系は相性が悪い? → mongoid 2.5系を使う
_ [Web][Ruby] padrinoとmongoid 3.0系は相性が悪い? → mongoid 2.5系を使う
- 2012/09/24追記: 3.0系を使う方法も書きました -> padrinoとmongoid 3.0系は相性が悪い? → padrino edge(git版) なら大丈夫
padrino入れて,mongoid使うように設定したところエラーが.
$ padrino s ~/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.0.22/lib/bundler/runtime.rb:68: in `require': cannot load such file -- mongo (LoadError)
足りないなら足せばいい,ということでGemfileに gem 'mongo' を追記.bundle installしても,またもやエラー.
$ padrino s ~/test_app/config/database.rb:12: in `<top (required)>': undefined method `database=' for Mongoid:Module (NoMethodError)
調べてると Error running "padrino g admin" ・ Issue #881 ・ padrino/padrino-framework ・ GitHub が見つかりましたが、どうもデータベースの指定を読み込んでくれず(英語を読み違えてるのかもしれませんが)… 結局 Mongoid 2.5系を使う ことにしました.
対処方法: Mongoid 2.5系を使う
まずは Gemfile を編集し,Mongoid 2.5.xが読まれるようにします.
gem 'mongoid', "~> 2.5.0" # gem 'mongo' # 読まれるのでわざわざ記述する必要なし.
bundle installします.
$ bundle install (省略) Your bundle is complete!
起動します.
$ padrino s => Padrino/0.10.7 has taken the stage development at http://0.0.0.0:3000 [2012-09-22 23:37:56] INFO WEBrick 1.3.1 [2012-09-22 23:37:56] INFO ruby 1.9.3 (2012-04-20) [i686-linux] [2012-09-22 23:37:56] INFO WEBrick::HTTPServer#start: pid=11079 port=3000
めでたしめでたし.
githubのTagsでリリース日時を確認してみると,
ということで,PadrinoがMongoid 3.0系に対応していないのかもしれません.
2012年09月24日 padrinoとmongoid 3.0系は相性が悪い? → padrino edge(git版) なら大丈夫
_ [Web][Ruby] padrinoとmongoid 3.0系は相性が悪い? → padrino edge(git版) なら大丈夫
先日 padrinoとmongoid 3.0系は相性が悪い? → mongoid 2.5系を使う を書きましたが,githubのpadrino (padrino edge)だと大丈夫だったので,その方法をば.
ちゅうい
- githubのpadrino は,きちんと動く状態になっているとは限りません.
- よーく見ると「build status: failing」になってたりします.
方法
- まずはGemfileを編集して, Padrino Edge (gitのもの) を使うようにします.ついでに,bson_extをコメントアウトしておきます。
# gem 'bson_ext', :require => "mongo" (省略) # Padrino Stable Gem # gem 'padrino', '0.10.7' # Or Padrino Edge gem 'padrino', :git => 'git://github.com/padrino/padrino-framework.git'
- bundle installします.
$ bundle install
- config/database.yml ファイルを作って,良い感じに書きます.書き方は Mongoid: Installation #Configuration あたりを参考に.
development: sessions: default: database: myapp_development hosts: - localhost:27017
- config/database.rb を書き換え,以下の3行だけにしてしまいます.
Padrino.before_load do Mongoid.load!(File.join(Padrino.root,"config/database.yml")) end
- 動作確認してみましょう.
$ padrino c => Loading development console (Padrino v.0.10.7) => Loading Application MyApp => Loading Application Admin 1.9.3-p194 :001 > Account.first => #<Account _id: 505d79e18e406f2bc4000001, _type: nil, name: "Foo", surname: "Bar", email: "test@example.com", crypted_password: "$2a$10$MuNCMgHB.jnz5d4g9clSQurCyRamdppvHglTRFB9ZvGyDBbXER5IC", role: "admin">
めでたしめでたし.