トップ «前月 最新 翌月» 追記

のろのろのろ雑記


2012年09月22日 padrinoとmongoid 3.0系は相性が悪い? → mongoid 2.5系を使う

_ [Web][Ruby] padrinoとmongoid 3.0系は相性が悪い? → mongoid 2.5系を使う


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でリリース日時を確認してみると,

  • 2012/06/20 Padrino 0.10.7 リリース
  • 2012/07/08 Mongoid 3.0.0 リリース

 ということで,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
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">

めでたしめでたし.


参考