2014/02/20

Rails production環境だけで発生した不具合

ひょっとすると、とても初歩的なことなのかもしれないが、Railsのdevelopment、test環境だと問題なく動いていたものがproduction環境で動かなくなる事態にハマった。 調べていくとconfig/environmentsにある各環境の設定ファイルにある

config.cache_classes = true

が動作の差異を生んでいた模様。
デフォルトではproduction環境だけがtrueになっている項目。falseの場合はアクセスの度にアプリケーションのクラスがリロードされる。trueにすると一度だけ読み込む。

とあるクラスをモンキーパッチでオーバーライドしており、その都度読み込まれて局所的に動いていたものが、true設定の場合は全部の使用箇所に影響してしまったというトホホな感じだった。
原因がわかるとどうってことないのだが、今後注意したい。

2014/02/19

WindowsでUnixコマンド

気になるGowというソフトウェア。

ReadMeにもThe lightweight alternative to Cygwinと銘打っているとおり、わずか10MB程度のCygwin互換ツール。CygwinのようにWindowsのコマンドプロンプト上で標準的なUnixコマンドが使えるようになるそうな。

昔、Cygwinに四苦八苦した経験があるので興味津々丸。コマンドプロンプトをあまり知らないこともあり。。
次にWindows環境を構築するときには使ってみたいです。Googleくびっぴきでバッチファイル書くのもうヤダ。

Gow

2014/02/14

Ruby 改行コードをWeb向けに置換

Railsにて。
下記でエラーが発生
  項目1 なんか変
  項目2 これも変
このようなエラーを返せと言われた。
しかし、ここは1レコードの要求の場合は画面に、複数レコードの場合はCSVでエラーを返していたので、ちょっとだけ困った。
改行を入れなければならないが、HTMLは改行を<br>で表現せねばならん。

結局、エラーメッセージはCSV向けに改行“¥n”を入れて生成し、画面に直接返す場合は応答直前で
message.gsub(/(\r\n|\r|\n)/, "<br />")
と置き換えた。
ちょっとカッコ悪い気はしつつ。

2014/02/13

公開鍵認証でリモートホストにパスワードなしログインする設定

公開鍵認証でリモートホストにsshする手順。日々、何度もログインするホストにパスワード入力が面倒なとき。

  1. ローカルで公開鍵と秘密鍵を生成
    $ ssh-keygen -N "" -t rsa
    • -Nはパスフレーズの指定で、空で設定すると毎回のパスワード入力を省略できる
    • -t rsaは鍵の種類を指定
    • 実行後$HOME/.sshディレクトリに秘密鍵id_rsa、公開鍵id_rsa.pubが生成される
  2. 公開鍵をリモートホストへコピー
    $ ssh-copy-id user_name@remote_hostname
    • scpなどで公開鍵をリモートにコピーしてリモートホストの$HOME/.ssh/authorized_keysに手作業(?)で加えてもよい
    • ssh-copy-idは上記を全部やってくれる
  3. レッツ リモートログイン
    $ ssh remote_hostname
にほんブログ村 IT技術ブログ IT技術メモへ