2012年3月23日 #ruby #rails #troubleshooting #rack

Rails 3.1以前のバージョンなら多分テスト実行時にこういう警告が出ることがあるかもしれません。

gems/rack-1.2.5/lib/rack/utils.rb:16: warning: regexp match /.../n against to UTF-8 string

このうるさい警告を消す方法を紹介します。

解決方法

rspecを使う場合はspec/spec_helper.rbに下記コードを最後に追記してください。

原因

Rack1.3からは解決できたらしいですが、Rails 3.1以前を使うならとりあえずこの方法で回避してもいいかと。
詳しくは:https://github.com/rack/rack/issues/41

自分のログは無くしたので@yuum3のログを引用させて頂きます。

  #  executing "find /home/rails_apps/todo31/releases/20110912141706/public/images /home/rails_apps/todo31/releases/20110912141706/public/stylesheets /home/rails_apps/todo31/releases/20110912141706/public/javascripts -exec touch -t 201109121417.06 {} ';'; true"
    servers: *"176.32.95.168"*
    *176.32.95.168* executing command
###  *err :: 176.32.95.168* find:
###  *err :: 176.32.95.168* `/home/rails_apps/todo31/releases/20110912141706/public/images'
###  *err :: 176.32.95.168* : No such file or directory
###  *err :: 176.32.95.168*
###  *err :: 176.32.95.168* find:
###  *err :: 176.32.95.168* `/home/rails_apps/todo31/releases/20110912141706/public/stylesheets'
###  *err :: 176.32.95.168* : No such file or directory
###  *err :: 176.32.95.168*
###  *err :: 176.32.95.168* find:
###  *err :: 176.32.95.168* `/home/rails_apps/todo31/releases/20110912141706/public/javascripts'
###  *err :: 176.32.95.168* : No such file or directory
###  *err :: 176.32.95.168*

Githubにも載ってましたエラーは無視しても大丈夫そうですが、下記の一行をdeploy.rbに追記すればエラー出なくなります。

# in config/deploy.rb
set :normalize_asset_timestamps, false

現象

Railsを-e productionで立ち上がるとき、或いはcapistrano本番サーバにデプロイしてアクセスする時に、HTTPのStatusは200なのに画像などが表示されない。JavascriptとCSSは問題ない。
発生バージョンはRails 3.1。

解決策

app/tmp/cacheを削除し、rake assets:precompileをもう一回実行。
ブラウザキャッシュを消してリロード。

調査経緯

assets周りの設定やfingerprint(MD5のハッシュ値)の比較など全部チェックしましたが、全然ダメでした。
最後はgithubのこのスレの方法で解決になりました。

問題となったrails applicationはRails 3.1.rc1から作っていたもので、そのままrc4, rc5, stableに更新してきました。githubで議論されたのはrc4からrc5になったときにこのような現象があったようです。恐らくtmp/cacheが変な動きをして手動で削除しない限り古いバージョンのものがずっと残されたかもしれません。

おまけ

Asset Pipelineの周りの設定ファイルを一応貼っておきます。

Githubでのスレ:https://gist.github.com/rails/rails/issues/2299

2011年9月21日 #ruby #troubleshooting #rails3.1

確定ではないですが、Rails3.1rcにアップしたらこんなエラーが出ました。

Please install the mysql adapter: `gem install activerecord-mysql-adapter` (mysql is not part of the bundle. Add it to Gemfile.)

解決策

  • database.ymlでmysqlのadapterをmysqlよりmysql2に変更
  • Gemfileにmysql2を追加しbundle installを実行

参考

http://stackoverflow.com/questions/6141276/rails-3-1-0-rc1-mysql-adapter-error
http://stackoverflow.com/questions/3467054/problem-with-mysql2-and-rails3-bundler

2011年4月15日 #php #php #troubleshooting

障害

http_build_queryを使ってurlのパラメータを作るときにパラメータがこうなりました。

foo=bar&baz=boo&hoge=hoge

上記のように複数のパラメータがある時に;であるべきのところが&となってしまいました。

これはPHPの設定ファイル、php.iniのarg_separator.outputで制御されてて、XAMPPの場合インストールされたデフォルトでは、「&」となるそうです。

解決方法

なので、php.iniの「arg_separator.output」の値を「&」から「&」に変更する

参考

http_build_queryを使うときの注意点(PHP)
http://www.multiburst.net/sometime-php/2008/12/http_build_query/