Bundler: The best way to manage Ruby applications
Install all gems into vendor/bundle, even gems that are already installed to your system and would normally be used from there instead of installed.
インストール時にnative extensionが作られるgem(たとえばsqlite3-ruby)をBundlerで入れるときに、おすすめされているディレクトリ(vendor/bundle)にインストールするとnativeなものがリポジトリに含まれちゃってわりと残念な感じになるんですが、みなさんどうしてるんでしょうか。
いくつかのディレクトリ(cache,gems,specifications)に撒かれているのをそれぞれ.gitignoreに書くのもそれはそれで気持ち悪いのでなにかうまい方法を考えていたら日が暮れてしまうという始末。あーなんてこと!
改行とるのをベタ実装してたらメソッドあったという話。
activesupport-2.3.8/lib/active_support/core_ext/base64/encoding.rb
10 def encode64s(value)
11 encode64(value).gsub(/\n/, '')
12 end
ほっほー。
自分はjpmobileを使ってアプリを作る章を担当しました。書店で見かけたら手にとって頂けるとありがたいです。
screen+vimで縦分割したときに矢印(→)やら米印(※)やら三角(▽)やらを含んだファイルで桁ずれを起こしていたのですが、対策が見つからずそのファイルは単独タブで開くという後ろ向きな手段で回避して使っていました。
しかし先日ついに我慢できなくなって、前から気になっていたtmuxを試してみたところ見事にこの現象が起きず、これを機に乗り換えることにしました。複数コンソールを開くだけ、というきわめて基本的な機能しか使っていなかったため、少し設定ファイルを書くだけでまったく同じように使えています。(参考として.tmux.confを貼っておきます。)
bind-key BSpace previous-window
bind-key Space next-window
set -g default-terminal screen-256color
set -g prefix C-z
set -g status-bg colour7
set -g status-fg black
setw -g window-status-current-format " #I:#W "
setw -g window-status-current-bg black
setw -g window-status-current-fg white
setw -g window-status-format " #I:#W "
さて、ということで必要に迫られてautotest_screenのtmux版であるautotest-tmuxを作りました。
screen版の区切りをアンダースコアにしたのが、githubに置かれたgemの命名規則にかち合うのを回避という理由だったため、いまはその心配がないであろうという判断でtmux版はハイフン区切りにしました。
同じような環境にあるかた、お試しください。
正しくは、500を返す。
render :nothing => true, :status => 450
なんてことをしていて、Mongrelの開発環境だとちゃんと450が返ってくるのにApache+Passengerの検証環境だと500が返ってきていた。
そこで原因を調べたところ、返す可能性のあるステータスコードはすべて定義されていて、それ以外は500で返している。(※ソースは後述)
で、なんでこんなことをしようとしているのか。Flashのアップローダを作ってFileReference#upload()でアップロードしているのだけれど、こいつが結果をHTTPステータスでしか受け取れない。だから、結果のメッセージをサーバから返してそれを表示する、てこともできない。
アップロード自体が成功したか否かを知るには200かそれ以外か、くらいで十分なんだけれど、アプリ要件(たとえば、アップロードが終わってからファイルを受け付けられない状況になってただとか、ファイルの中身を見て判断しなきゃいけないだとか)での結果を返すには、これでは足りない。
結局、Apacheのソースコメントでunusedとなっていた418~421に意味を持たせ、そこを使って対応しました。層を混同していて気持ちがいいものではないのだけれど、影響範囲は広くなく、なんらかのフラグを立てて別リクエスト、のコスト増を考えるといいだろうとの判断。もしなにかいい方法があったら教えてください。
以下、Apacheソースの該当部分。
続きを読む…
configの下も出したかったので調べた。
rails-2.3.5/lib/source_annotation_extractor.rb
48 # Returns a hash that maps filenames under +dirs+ (recursively) to arrays
49 # with their annotations. Only files with annotations are included, and only
50 # those with extension +.builder+, +.rb+, +.rxml+, +.rjs+, +.rhtml+, and +.erb+
51 # are taken into account.
52 def find(dirs=%w(app lib test))
53 dirs.inject({}) { |h, dir| h.update(find_in(dir)) }
54 end
ここね。
autotest/screenの切り出しを引き受けてから早2週間、やっとのことでリリースしました。
RubyForge: autotest_screen: Project Info
Autotest::Screen shows autotest/autospec progress on GNU Screen’s status line.
これからは
gem install autotest_screen
でどうぞ。
RubyForgeにプロジェクト作ってファイル上げてって流れ、komagataさんの動画がリアルでおすすめ。
RubyForge: zentest-4.0.0-released
ZenTest version 4.0.0 has been released!
先日パッチを投げてみて、そのあとこんなやりとり(超訳:Ryan「おれscreen使ってなくて、これからも使う予定ないから、メンテやってくれないかな。」オレ「わかった、やるよ。」)があって、autotest/screenを担当することになったのですが、その直後にリリースされた4.0.0ではもうautotest/screenが削除されております。(こんなタイミングだったとはっ!
)
そのためZenTest 4.0.0にアップデートされた方はautotest/screenが無い状態になっていると思いますので、お困りの方のために暫定処置としてソースを張っておきます。
こいつを ZenTest-4.0.0/lib/autotest/screen.rb として置くか、$HOME/.autotest にまるっと貼り付けてやればOKです。
正式対応はへっぽこ英語でやりとりしつつ鋭意作業中ですので、いましばらくお待ちください。
- シンタックスエラーやらが原因で、気がついたらscreenの裏で静かにautotestが落ちてた。
- なんてことを繰り返してた。
- そのためのhookを追加したらいいんじゃないかと思いつきやってみた。
- 去年いじったautotest/screenがそのままになっていたのに気がついた。
- この際一緒に投げようとした。
- 他の人が先に投げたパッチに被っていることに気がついた。
- どうしようか考えた。
- けれどとりあえず気にしないで投げた。←いまココ
[ref.] Autotest::Screenのhookを整理してみた。
[ref.] RubyForge: ZenTest – Ruby Unit Testing Utility: