Dreamhostで `activate': can't activate rails (= 2.0.2), already activated rails-1.2.6] (Gem::Exception)

DreamhostRails 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を積極的に使おうっと。