・2008/06/07 里親になりそうです
・2008/06/15 やってきた
・2008/06/16 写真と動画
・2008/07/18 もみちゅぱ
・2008/07/20 もみちゅぱ動画
・2010/06/09 猫を飼ってる人には判ること
・2011/04/30 もみもみちゅぱちゅぱ
・2011/05/01 むにゅーん
☆エイプリルフール
・2005/04/01
・2004/04/01
・2003/04/01
☆サーバ設定
・2004/12/14(1) ハード・ソフト一覧
・2004/12/14(2) OS Install
・2004/12/15(1) /etcの下
・2004/12/15(2) 各portの設定
・2004/12/17(1) RAIDディスク監視
・2004/12/17(2) IDEディスク監視
・2004/12/17(3) HotSaNIC
・2008/05/31 メンテナンスのお知らせ文テンプレ
・2008/06/01 ECCエラーなHDD入れ替え
・2008/12/30 HDD入れ替え
・2009/06/06 電源が壊れたときの作業ログ
・2011/05/29 tDiaryを3.0系統に入れ替えたときのパッチ
☆Xperia acroHD・Android
・2012/12/22 root取り~Titaniumまで
・2013/01/06 アプリ整理・Link2SD
・2013/01/21 旧端末→新端末アプリ移動
・2013/02/09 旧端末分解・アプリ整理
☆写真
・2002/12/31 冬コミ ブリジットコス
・2004/02/16 Babyロリ服
・2011/03/09 リーマンコス(笑)
・2011/07/19 BABYロリ服・浴衣
・2011/08/13 夏コミ2日目。薄桜鬼千鶴・BABYロリ服
・2011/08/14 夏コミ3日目。リリカルなのは制服・薄桜鬼千鶴
☆その他
・2004/08/08 tDiary改造メモ
・2003/02/18 キャッチセールスの断り方
・2010/08/12 リネ2 FFC応募作品
・2011/07/12 リネ2とTERAとの比較記事
2016-03-08 (Tue)
★AWSでrubygemsを動かす
tDiaryのCGI (要するにココ) を、旧サーバから新サーバ(AWS)にコピーしたら、動きませんでした。
cannot load such file -- json (LoadError)
こんなエラー。おかしいな…、と。だってJSONは、Ruby1.9以降で標準装備なはずなんです。
エラーが出ている行を探してみると
require 'json'
この行です。いたって普通のことをやってそう。
tDiaryのドキュメントにしたがって、bundle installしなおしても同じエラー。
ところが
$ ruby -e "require 'json'"
エラーなしです。
$ gem list | grep json
json (1.8.2)
存在します。
なのにエラー… (´・ω・`)
はてさて、困りました。
こういうときは…
1日寝て別のことをやって過ごす!
..zZ .zZ .zZ .zZ .zZ
↓rubygem (ルビーの宝石)
……
はっ、こ、これは……だって日曜ですもんね! おもちゃ買ってね!
さて、1回ディレクトリを全部消して、やりなおしてみても、同じ結果でした。
何が悪かったんでしょう。gem とか bundler とか調べてたら、こんなのに当たりました。
$ cat .bundle/config
---
BUNDLE_PATH: ".bundle"
BUNDLE_WITHOUT: development:test
BUNDLE_DISABLE_SHARED_GEMS: '1'
システムにインストールされてるgemは無視する設定です。
……
Amazon Linuxのほうでは
$ yum list installed | grep ruby | grep json
rubygem22-json.x86_64 1.8.2-1.39.amzn1 @amzn-main
というわけで、こいつgemです。
……
ファイルの実体のほうを調べてみたところ /usr/share/ruby/gems/2.2/gems/json-1.8.2/lib/json.rb にファイルは存在しました。
でもこれって、BUNDLE_DISABLE_SHARED_GEMS の設定があるから、読まれないんですよね。だから require 'json' でエラー…
というわけで、原因がわかったので対処します。
ここの tDiary だけなら Gemfile いじれば対処できる気はしますが、他に同様にrubyを使っているところで同様の対処は面倒くさい、そもそもAmazon Linuxでgccは標準で入っていない(yum install必要)、等の理由により、システム側に対策を入れてしまうことに。
$ cd /usr/share/ruby/2.2
$ sudo ln -s /usr/share/ruby/gems/2.2/gems/json-1.8.2/lib/json.rb .
これで tDiary 動きました。めでたしめでたし。