TODOの一覧を出力したい

コード中で

# TODO ほにゃらら

って書いておけば、rake notesでTODO一覧を出力できる。

1
2
3
4
5
6
7
rake notes

app/controllers/news_controller.rb:
  * [  9] [TODO] お知らせ一覧データの有効期限の実装を行う

app/controllers/users_controller.rb:
  * [174] [TODO] デバッグ用、後で消す。

ファイアーウォールとかで守られている社内gitサーバーに置かれたgemを使いたい

弊社はgithub enterpriseで運営しています。
外部からは自由にアクセスできないように、ファイアーウォールで社内アクセスのみに接続を限定しています。

が、今やっている案件ではお客様が用意したサーバーにアクセスしなければならず。
社内gitサーバーにアクセスできない状態です。

そういった場合、capistranoでローカルにソースを先にダウンロードしてtarで固めてサーバーに送信するという指定ができます。

config/deploy.rb

1
2
set :deploy_via, :copy
set :copy_cache, true

ですが、Gemfileにか書かれているGemファイルはbundle installで入れるようなので、社内gitサーバーに置かれたgemを参照しようとしたら落ちました。

うーん。gemも一式ローカルに落としてくれんか?と探していたらありました。
rudionrails/capistrano-strategy-copy-bundled ? GitHub

Gemfileにgem ‘capistrano-strategy-copy-bundled'と書いてbundle install。

config/deploy.rb

1
set :deploy_via,    :copy_bundled

でもcap deploy:updateしたら、

1
2
3
4
5
6
7
8
executing locally: "cd /var/folders/dl/n1zf4q750msgc9jcd99hdq3c0000gn/T/20130422015014 && bundle package --all"
Error loading RubyGems plugin "/Users/gogosakrua/.rvm/gems/ruby-1.9.3-p385@global/gems/rubygems-bundler-1.1.0/lib/rubygems_plugin.rb": Could not find rubygems-bundler (>= 0) amongst [actionmailer-3.2.12, actionpack-3.2.12, active_decorato
r-0.3.4, activemodel-3.2.12, activerecord-3.2.12, activeresource-3.2.12, activesupport-3.2.12, arel-3.0.2, builder-3.0.4, cancan-1.6.9, chronic-0.9.1, chunky_png-1.2.7, coffee-rails-3.2.2, coffee-script-2.2.0, coffee-script-source-1.6.1,
compass-0.12.2, compass-colors-0.9.0, compass-rails-1.0.3, compass_twitter_bootstrap-2.2.2.2, country_select-1.1.3, erubis-2.7.0, execjs-1.4.0, fssm-0.2.10, gruff-0.3.7, haml-4.0.0, haml-rails-0.4, hike-1.2.1, i18n-0.6.4, jbuilder-1.0.2,
journey-1.0.4, jquery-rails-2.2.1, json-1.7.7, kaminari-0.14.1, libv8-3.11.8.13-x86_64-darwin-12, log4r-1.1.10, mail-2.4.4, mime-types-1.21, multi_json-1.6.1, pg-0.14.1, polyamorous-0.5.0, polyglot-0.3.3, rack-1.4.5, rack-cache-1.2, rack-
mini-profiler-0.1.23, rack-ssl-1.3.3, rack-test-0.6.2, rails-3.2.12, rails3_acts_as_paranoid-0.2.5, railties-3.2.12, rake-10.0.3, ransack-0.7.2, rdoc-3.12.2, ref-1.0.2, rjb-1.4.6, rmagick-2.13.2, rubyzip-0.9.9, sass-3.2.6, sass-rails-3.2.
6, seed-fu-2.2.0, settingslogic-2.0.9, simple_form-2.1.0, sprockets-2.2.2, therubyracer-0.11.4, thor-0.17.0, tilt-1.3.4, treetop-1.4.12, turbo-sprockets-rails3-0.3.6, tzinfo-0.3.36, uglifier-1.3.0, whenever-0.8.2] (Gem::LoadError)
    command finished in 3794ms

って怒られる。
うーん。gemsetがdefault使われてるなー。ってことで。
いい機会なので、rbenvにしてみました。
http://ksauzz.github.io/blog/2012/03/23/rbenv-ruby-build-rbenv-gemset/?

んで cap deploy:update

1
undefined method `with_clean_env' for Bundler:Module (NoMethodError)

また怒られる。なんでだ。ぐぐっても有益な情報なし。
あ、ひょっとしてbundle exec必要?

ってことでbundle exec cap deploy:update

んで行くはず。

はずって言うのも。あまりにGem一式のダウンロードが重くて、やってらんねぇってなったので。
急遽ファイアーウォールに穴開けてもらうことになったからです。

中途半端ですまんです。



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

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

1
rvm reinstall ruby-1.9.3-p385

以上で、メッセージ消えました。