EngineYardCloudのEnvironmentをのぞいてみたらruby2.1.2に対応してたので怖話をアップデートしました。

stackのversionが上がる時ほど警戒は必要無いとは思いますが、clone environmentしてそちらをアップデートしてみて動作確認してから本アップデートをかけるのが正義。

ruby2.0.0-p247からのアップデートだったんですが、何の問題も無く完了しました。最新は気持ちいい。

Early AccessにはWebサーバーのpumaも来てるのでrails4.1系にしてpumaが正式版になったらこっちも変えたらかなり速くなるんじゃないかなと期待しております!

ほぼ全部インターンの@hir_aikさんのお陰で怖話をrails3.2から4.0.5にアップデートできました。

やったー!勢いにのって4.1行くぞー!

2011年5月22日のrails3.0.7が最初のコミットでちょっと古くなってきましたが、railsアップデートを諦めた時がサイトが死ぬときと心得て頑張ります。

マンションで強制的にネットはJ:COMを使わされている。

ネット回線の移行 - komagata

2日ほど前から色んなサイトが見れたり見れなかったりする。iPadでのGoogleハングアウトがしょっちゅう切れる。

ビデオチャット系は調子悪いと人間関係まで悪化しそうなので困る。調べてみた。

IPでのpingは通るのにwebが見れたり見れなかったりする。有線でも起こるので無線やルーターのせいではなさそう。DNSが怪しい。

DNSサーバの障害発生について

J:COMの障害情報ページに行ってみたらDNSサーバーに障害が起きてるらしい。2日経ってるのに今も発生中か…。

iPadでのビデオチャット断線が困るので無線LANルーター(BUFFALO WZR-AGL300NH)の方にGoogle Public DNSを設定した。

直った、ヤッタネ。もうJ:COMのDNSなんて信用しないぜ ( ゚д゚)、ペッ

@odailly_jpさんがrailsを(最新版をちゃんと)使ってる会社に就職が決まり、昨日最終日だったのでささやかな送別会をやりました。

怖話のcontributionを見るとごく短期間なのに歴代5位のcommit量で素晴らしい。

当たり前なんだけど、怖話にとってありがたい人ほど早く就職が決まって卒業していってしまいます。残念なことです。

しかし、ruby界隈にいる限り顔を合わせることも多いでしょう。

Herokuでrootドメインを独自ドメインで使う - komagata

このエントリー経由でDozensにサインアップしてくれる人が結構いるらしい。エントリーを書いた人間として紹介したかいがあったというものだが…

---------------------------------------------------------------------------------
このメールは【Dozens】より自動的に送信されています。
お心当たりの無い場合や、ご不明な点がありましたら
お問い合わせフォームよりご連絡をお願いいたします。
---------------------------------------------------------------------------------

komagataさん、こんにちは。

Dozensお友達紹介キャンペーンのご利用ありがとうございます。
あなたの招待コードからDozensへの登録がありましたので、
あなたの基準レコードは、 213から216へ増えました!
ぜひご活用ください。

今後ともDozensをよろしくお願いします。

---------------------------------------------------------------------------------
Dozens
http://dozens.jp/
contact@dozens.jp

そんなに使えるDNS Record増えてもどないせっちゅー…。

railsでいつも下記のようにしてたのでgemにしました。

# lib/seed_helper.rb:
require 'active_record/fixtures'
                               
module SeedHelper              
  def import_fixture(name)
    puts "Import #{name}..."   
    ActiveRecord::FixtureSet.create_fixtures \
      "#{Rails.root}/db/fixtures", name
  end                          
end
# db/seeds.rb:
require 'seed_helper'
include SeedHelper # この2行がウザい

import_fixture :users
import_fixture :posts

seed系のgemはたくさんあるけど俺にはどれもオーバースペックだったので。

simple_seed

komagata/simple_seed

使い方

$ mkdir db/fixtures
$ vi db/fixtures/users.yml
user_1:
  name: Jean Valjean
user_2:
  name: Bishop Myriel
user_3:
  name: Cosette
$ vi db/seeds.rb
import_fixture :users
$ rake db:seed
Import users...

rubyのIDEではRubyMineが有名だけど有料なのでEclipse+RDT(Ruby Development Toolkit)を試してみました。(Aptana Studio 3 Pluginは使わない)

Eclipseのインストール

eclipseのサイトからMac OS X 64 Bit版をダウンロード。この時のバージョンは4.3.2でした。

RDTのインストール

-All Available Sites--にしてrubyで絞り込むとRDTが出てくるのでインストール。

PreferencesでRubyのInterpretersを追加。上記のようにrbenvを使ってる場合はshims/rubyを指定すればOKでした。

Enginesで何でdebugするのかというのを選びます。他のはgemが必要だったりバージョン毎に動いたり動かなかったりするのでRuby Build-In Debuggerを選択。

普通のrubyスクリプトをdebug

これは普通にできる。トップレベルのlocal変数が見れない気がするけど。

sinatraアプリをdebug

これも普通に実行するとhttp://localhost:4567/とかで立ち上がるのでブラウザからアクセスするとちゃんとブレイクポイントで止まってくれる。

railsアプリをdebug

怖話で試してみる。

これも要はscript/rails serverを実行してhttp://localhost:3000/にアクセスすればいいだけだからDebug Configurationsで下記のようなものを用意する。

実行するスクリプトはscript/rails

引数はserver

ただでさえ遅い怖話のデバッグ起動はクッソ重いので覚悟すること。

ちゃんとブレイクポイントの上の行の@nowがとれてます。

感想

ややこしいプロジェクトの厄介なバグを本腰入れて追い回す時には良いかも。ただほんとに重いので軽快にdebugしたいならpry-byebugの方が良いかな。

気になった点

ruby1.9からのnew hash syntaxがエラーと認識されている。RDTのどこかで設定できるのかな?

$ brew update
$ brew upgrade rbenv ruby-build
$ CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl` --with-readline-dir=`brew --prefix readline`" rbenv install 2.1.2
$ rbenv global 2.1.2
$ gem install bundler rbenv-rehash

Engine Yard Cloudを使っててrailsのproduction.logをちょっとしたフィルターかけてサッと見たい。(productionでのバグの原因究明などで)

production.logを探るのってEYCに限らず、機会が多いわりに面倒臭い。

$ scp deploy@app.kowabana.jp:/data/kowabana/shared/log/production* .
$ gzip -d production.log-*.gz
$ grep -r 'foo' .

とか。productionサーバーへのアクセス権がある人しか見れないのも手軽じゃない。

次からはこんなことしたくないのでEYCのlogentries addonを使ってみた。logentriesは無料でも使える範囲が大きいし、以前使ったことがあるので慣れているのでちょうどいい。

Getting started with Logentriesの通りに進めていき、下記のようにproduction.logを追加した。

diff --git a/cookbooks/le/recipes/configure.rb b/cookbooks/le/recipes/configure.rb
index 8a4432d..8225077 100644
--- a/cookbooks/le/recipes/configure.rb
+++ b/cookbooks/le/recipes/configure.rb
@@ -16,6 +16,7 @@ follow_paths = [
 ]
 (node[:applications] || []).each do |app_name, app_info|
   follow_paths << "/var/log/nginx/#{app_name}.access.log"
+  follow_paths << "/data/#{app_name}/shared/log/production.log"
 end

upload, applyしてからLogentriesのDashboardにアクセス。

自前でログサーバー作ってアレコレすると大変なので手軽で重宝しそうです。

@yukihrに聞いて衝撃を受けた設定。

人類が有史以来cmd-qによって失った生産性の低下はcrontab -rと合わせると第二次世界大戦に匹敵すると言われています。

何故頻繁に使うcmd-wの横に破滅的なキーを置くのか。crontab -eの隣に置くのか。(Dvorak民大勝利とかいってるそこのあなた。人類全体のことを考えなさい!)これは人類にとっての損失です。

そこで手軽にその悲劇を防ぐ方法が発明されました。

spotlightをcmd-qに割り当てましょう。

spotlightの設定画面からやろうとしてはいけません。cmd-qを押したら設定Windowが閉じてしまうからです。あー忌々しい。

KeyboardのShortcutの設定からならWindowを閉じることなく設定できます。

ついでにIDEで補完に使われることの多いC-Spaceも空いて一石二鳥!

God bless you.