Dreamhostで `activate': can't activate rails (= 2.0.2), already activated rails-1.2.6] (Gem::Exception)
DreamhostでRails 2.0.2がインストールされてしまい、これまで1.2.6で動いていたバッチプログラム(./script/runner lib/*.rb)がとまってしまった。
まだ解決策が見つからない。
script/ruunerの起動はやめて、ActiveRecordを加えたプログラムにする。
require 'rubygems' require 'active_record' ActiveRecord::Base.establish_connection( :adapter => 'mysql', :username => 'root', :password => '', :socket => '/var/run/mysqld/mysqld.sock', :database => 'データベース', :host => 'ホスト', :encoding => 'UTF8' ) class モデル名 < ActiveRecord::Base end
その他、railsのホームディレクトリから実行する場所が変わったので、パスを変える必要がある。しかし、Railsで実行したときはDBの内部は文字化けのままうまく動いていたのだが、直接ActiveRecordを触ったら、DBの内部は文字化けがなくなった。
逆にRailsが表示するときに文字化けになってしまう。
そこで、Railsで文字化けを解消する方法があった。DBに接続する直前に'SET NAMES UTF8'を実行することだ。たしか、これはPHPでも同じようなことをやったなぁ(MySQL)。
http://konohaotoshi.blog69.fc2.com/blog-entry-83.html より
class ApplicationController < ActionController::Base # Pick a unique cookie name to distinguish our session data from others' session :session_key => '_application_session_id' before_filter :set_charset before_filter :configure_charsets private def set_charset headers["Content-Type"] = "text/html; charset=utf-8" end def configure_charsets response.headers["Content-Type"] = "text/html; charset=utf-8" # Set connection charset. MySQL 4.0 doesn't support this so it # will throw an error, MySQL 4.1 needs this suppress(ActiveRecord::StatementInvalid) do ActiveRecord::Base.connection.execute 'SET NAMES UTF8' end end end
しかし、この設定をする前に正常に表示されていたデータはみんな文字化けするようになった。
ソフトウェア開発は日本語の文字化けに悩まされる。
日本語コードを複雑にしたのは誰だ!! UTF-8を積極的に使おうっと。