なんとなく日々徒然と

applicatonControllerでイッテに例外を引き受ける

とりあえずエラー起こっても、なんとなくぼんやりとどうにかして欲しい時がある。
たとえばAPIでなんらかのエラーがあったらとりあえずステータスコードに500を返すようにしたりとか。

1
2
3
4
5
6
7
8
9
class ApiController < ActionController::Base
  rescue_from Exception, with: :system_error 

  def system_error(ex)
    logger.error(ex.message)
    logger.error(ex.backtrace)
    render json: @data , :status => 500
  end
end

Exceptionを指定して、なんでもかんでもエラーが起きたらsystem _errorに投げちゃう。みたいな

tmuxはじめました

f:id:gogo  _sakura:20130228210855p:image

tmux-powerlineも入れました。

f:id:gogo  _sakura:20130228210856p:image

左側には
IPとか色々でてます。

右側には
地震速報
Gmailの受信件数
現在流れているItuneの曲名。
PC起動してからの経過時間。
メモリ使用率
東京の天気
日時

が表示されてます。

あらやだ、かっこいい。

でもなんか表示変。
あとgitのブランチがうまく表示されない

軽くデバッグしたら、パスの取得に失敗してるっぽい。

1
PROMPT="$PROMPT"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'

って.zshrcに書いてもダメ。
うーむ。

そして今日はvim-powerline入れてみました。

f:id:gogo  _sakura:20130228190240p:image

うん。かっこいい。

ターミナル越しにうっすら透けている、うちの愛犬小梅さんにも使ってもらいました。

f:id:gogo  _sakura:20130228183657j:image

・・・・・・。

満足そうです( ̄∇ ̄)

simple_formで必須に設定した時に、必須のマークを右に出す

{RAILS _ROOT}/config/initializers/simple _form.rbの

1
# config.label_text = lambda { |label, required| "#{required} #{label}" }

のコメントアウトを外して、左右を入れ替える。

1
config.label_text = lambda { |label, required| "#{label} #{required}" }

文言はlocaleで設定する。

1
2
3
4
5
6
ja:
  simple_form:
    "yes": 'Yes'
    "no": 'No'
    required:
      html: '<abbr title="required">[必須]</abbr>'

とっとこhaml太郎

タイトルに意味はないです。
今日はerbをhamlに一気に変換したいと思います。

1
2
#Gemfile
gem "erb2haml", :group => :development
1
2
3
4
bundle install   
rake haml:convert_erbs
 
ERROR:  Could not find html2haml in your PATH. Aborting.

あれ?

追記

1
2
3
4
5
#Gemfile
group :development do
  gem 'html2haml'
  gem 'erb2haml'
end
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
rake haml:convert_erbs
Looking for ERB files to convert to Haml...
Converting: app/views/devise/confirmations/new.html.erb... Done!
Converting: app/views/devise/mailer/confirmation_instructions.html.erb... Done!
Converting: app/views/devise/mailer/reset_password_instructions.html.erb... Done!
Converting: app/views/devise/mailer/unlock_instructions.html.erb... Done!
Converting: app/views/devise/passwords/edit.html.erb... Done!
Converting: app/views/devise/passwords/new.html.erb... Done!
Converting: app/views/devise/registrations/edit.html.erb... Done!
Converting: app/views/devise/registrations/new.html.erb... Done!
Converting: app/views/devise/sessions/new.html.erb... Done!

うんうん。

追記
遅れましたが、Ruby2.0おめでとうございます。
とりあえずMacに入れてみました。それだけです。

powとpowderを使おうとしたら、ずっと接続中で何も表示されなかった

という現象

powのログを見てみる。
場所は $HOME/Library/Logs/Pow/apps/your _appname.log

1
2
3
4
[Wed Feb 20 2013 17:35:57 GMT+0900 (JST)] DEBUG nack worker 2833 spawned
[Wed Feb 20 2013 17:35:57 GMT+0900 (JST)] WARNING Could not find i18n-0.6.1 in any of the sources
[Wed Feb 20 2013 17:35:57 GMT+0900 (JST)] WARNING Try running `bundle install`.
[Wed Feb 20 2013 17:35:57 GMT+0900 (JST)] DEBUG nack worker exited

むむ?ないって言われてる。と思ってアプリのルートみたら、.rvmrcおいてなかった。
置いてみたら直りましたというひどいミス・・・

ruby-1.9.3-p385入れたら、libyaml入れてと言われてしまった。

ruby-1.9.3-p385入れた。
なんかしたら以下のwarningが出た。

1
2
3
/Users/user_name/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

むむむ。
素直に入れる

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
rvm pkg install libyaml

Fetching yaml-0.1.4.tar.gz to /Users/user_name/.rvm/archives
Extracting yaml to /Users/user_name/.rvm/src/yaml-0.1.4
Configuring yaml in /Users/user_name/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/user_name/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/user_name/.rvm/usr

Please note that it's required to reinstall all rubies:
  rvm reinstall all --force

む?
個別指定できそうだけど、時間あったので言われた通りにやる

1
rvm reinstall all --force

結構な時間がかかる。
個別にやった方が良さそう。
ちなみに調べたらこれで行ける。

いろいろなgitignore

色々な言語やフレームワークのgitignoreのテンプレート

とりあえず新規でプロジェクト作ったなら、適用してみると少しだけハッピーになれる気がしますね。
https://github.com/github/gitignore

色々あるもんです。

httpリクエストを投げまくれるRuby製のCLIツール作ってみました

Rubyでサブコマンド付きのコマンドを簡単に書けるThorを見て勉強がてらに作ってみました。

コマンドラインから指定したURLやPORTに任意のデータをつけてGET POST PUT DELETEを指定回数分投げることができるGemを作りました。
負荷をかけたい時とか、APIで同一のコンテンツを複数作成する時とかというニッチなユースケースに使うといいんではないでしょうか。

rubyはthreadプログラムを書いても、ネイティブスレッドの実行は一つという状態になってしまうようなので。
いい感じに並列処理を実行してくれるparallelというGemを使っています。

Rubyで並列実行処理を簡単に書く

使い方です。

インストール

1
gem install http_machinegun

使ってみる

1
2
3
4
5
# 一回だけgetリクエスト発行
http_machinegun fire -u http://localhost

# 80番ポートにabcdeという文字列のpostリクエストを10回とばす
http_machinegun fire -u http://localhost -p 80 -t 10  -d abcde

特に実際に使う場面があって作ったわけではないので、抜けとか多いかもしれません。
改善ポイントとか教えてもらえると嬉しいです。
あと出力される内容に微妙に変な改行が入ってしまうのは何故だろうorz

ソースはこちら
YoshitsuguFujii/http _machinegun ? GitHub