2013/04/20

MySQLとJRuby on Rails メモ

JRuby 1.5.6で運用してたがいつのまにか1.7.3まで出てた。深く考えずに更新してみた。

いろいろ変えることになった。
そもそも別にアップデートしないでも良いかなと思ってたが、RubyMineを使っていて「.find(:all,...)」は古いよ、と言われたので「.all(...)」に直した。
すると 実行段階で1.5にはそんなメソッド無いよ、と言われた。
で芋づる式にアップデートすることにしたら意外と初期設定とか忘れてることが多いのでまとめてメモる。

◆MySQLについて

最初からなのでMySQLについて最低限のコマンド類
> create database <DBName>;
> create user <userName>@"<hostname>" identified by "<password>";
> grant all on <DBName>.* to <userName>@"<hostname>";
これはリモートホスト<hostname>から、データベース<DBName>を使うユーザ<userName>さんを作成するコマンド(ちょっと間違ってたので修正)。
運用時の安心感のため、ダンプ出力とリストアのコマンドもメモる。
MySQLのコマンドラインではなく、コマンドプロンプトで
# mysqldump -u <userName> -p<password> <DBName> > dump.sql
# mysql -u <userName> -p<password> <DBName> < dump.sql
とやる。リストアの時は先にDBNameというデータベースを作成しておかないといけない。

◆JRuby on Railsが動くまで

config/database.yml でDB接続情報を正しく入れたら
プロジェクトフォルダ内で、
# rake db:migrate
でデータベースが作成される。

 プロジェクトフォルダ内で、
# jruby -S script/rails server
で起動する。( -e production でプロダクションモードで起動)。

さて実際にやってみるとdb:migrateで泥沼のようにはまる。
# rake db:migrate
と、久々にやったらInnoDBがオフになってたようで
 ActiveRecord::JDBCError: unknown storage engine 'innodb'
というエラーが出た。

my.ini で skip-innodb という行が有効になってたのでコメントアウトし、再起動。

# rake db:migrate
とやったら
 You have already activated rake 10.0.3, but your Gemfile requires rake 0.8.7
とりあえずrakeをさらにアップデートしてみる(←この対処方法は酷いかもw)
# bundle update rake

rakeは10.0.4になり、db:migrateをやると
 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task'
となった。

後に引けないのでGemfileの
「gem 'rails' '3.0.3'」 「gem 'rails'」にしてみる(railsも最新を使う)(よく分かんないけどちゃんとバージョン指定してやんないと。この書き方は良くないと思うよ)。
でbundle installやってdb:migrateすると一応うまくDBが作られた。

railsをスタートしてアクセスすると
 undefined method `debug_rjs=' for ActionView::Base:Class
というエラー。これは「config/environments/xxx」ファイルに記述されている、config.action_view.debug_rjs = trueが要らないらしいので削除。

最期に
 no such file to load -- /lib/jar/xxx.jar
とエラー。
あるrbファイルのrequire文だが、このパスの指定は確かに変だ。昔から間違えてたらしい。なんで動いてたんだろうねw
jar/xxx.jarに変更してやっといつもの画面が出た。

もうひとつ、JavaScriptライブラリがprototypeからjQueryに変わってたのでJavaScriptが動かなかった。手動でapplication.html.erbに
  <%= javascript_include_tag 'prototype' %>
などいくつかを追記し、全て動いたぞと。
さらに言語仕様の変更もあるだろうからその対応をすれば完璧。

…そんなとこかな?

0 件のコメント:

コメントを投稿