GitHub のプルリクエストを fetch しとくと便利

Git

GitHub や GHE を使って多人数で開発していると,プルリクエストを横断して試す必要が頻繁に発生すると思います. プルリクエストを次々に試したり,#30 と #31 をマージした結果を試したい!なんてケースもあるのではないでしょうか.GitHub では git ls-re…

Rails 3.2.9 では integer なカラムに紐付いた属性に Numeric・Boolean 以外の内容を入れたときの挙動が変わった

http://blog.eiel.info/blog/2012/11/16/rails-329-default-scope/ 読んで,「前からそうじゃなかったっけ?」と思ったので確認した.そもそも default_scope の挙動が変わったのではなく,代入時のキャストの挙動が変わったようだ.(ここでは default_scope…

private なレポジトリを hub clone するときは -p が必要

Git

https://github.com/defunkt/hub/issues/212 あるいは man hub とかに書いてある

google-spreadsheet-ruby 試した

GoogleSpreadsheet で定時ログ出力みたいのできないかなーと思って gimite/google-spreadsheet-ruby 試してみたけどなかなかヨサゲ。てきとーなサンプルはこれ。 https://gist.github.com/3775235とりあえずカラム名と値与えてあげれば追記していける Worksh…

[Node]Backbone.js + Sinon.js で callback をテストしようとしてハマる

端的に言うと以下のコードは想定通りに動かない。(Node のコンソールで) var Backbone = require('backbone') var Sinon = require('sinon') var m = new Backbone.Model({ 'foo': 'bar' }) var f = function(){ console.log("===> Callback called") } m.on…

responders と RSpec

responders で書き換えられた scaffold で RSpec が通らなくなる件。Post の内容がエラーかどうかを判定するのに、 scaffold では AR::Base#save の戻り値で判定しているため、Spec は次のようになっている。(ここでは ItemsController の Spec と仮定する…

久々に Ruby toolbox を眺めてみたメモ

ほんとにメモだけ。チェックしておくと便利そう https://www.ruby-toolbox.com/categories/Active_Record_Enumerations https://www.ruby-toolbox.com/categories/Active_Record_Value_Cleanup https://www.ruby-toolbox.com/categories/API_Builders https:…

Rack::GoogleAnalytics

leehambley/rack-google-analyticsこの Rack Middleware は、 production 環境のすべての HTML を返す URL に Google Analytics を組み込みたいというニーズがあったときに便利。以下サンプル。Gemfile: gem 'rack-google-analytics', :require => 'rack/goo…

明けましておめでとうございます

この日記は今年も Rails 中心に淡々と気づいたメモを残していきたいと思います。だいぶ不定期ですがよろしくお願いいたします。

Rack::Access で IP アドレス制限

Rails アプリケーションで IP アドレス制限が必要になった際には、基本的に上位のリバースプロキシ(Apache とか Nginx とか)で行うことが多いと思いますが、一方で Rails 本体で制限をかけなければならないこともあります(Heroku だとか)でもそれを Rail…

shoulda-mathcers での validate_uniquness_of の注意点

class User < ActiveRecord::Base validate :name, :unique => true end ActiveRecord の↑のようなモデルの spec として、shoulda-matchers の validate_uniquness_of を使うことがある。このときこんな風に書くと、場合によって通ったり通らなかったりする…

FactoryGirl の新しいインタフェースに移行したときのメモ

えいっと新しい FactoryGirl に移行して、新しいインタフェースに対応してみた。どう移行したかは GETTEING_STARTED.md を読んでその通りに定義部分と利用部分を修正した。詳細は省く。……が、こんな感じのエラーに悩む。 ....../ruby-1.9.2-p290/gems/factor…

packed_field gem

Rails の ActiveRecord::Base.serialize を(仕方なく)使う機会があったが、使い方が気に食わなかったんでさくっと Wrapper を書いたりした。 https://github.com/holysugar/packed_fields https://rubygems.org/gems/packed_fields 名前をやっつけすぎたと…

Capistrano で GitHub の CA Cert 関連のエラーが出てしまうとき

対象: capistano で Rails をデプロイして bundle install の際に GitHub で証明書のエラーになっちゃう人 require 'bundle/capistrano'*** [err :: user@xxx.xxx.xxx.xxx] error: SSL certificate problem, verify that the CA cert is OK. Details:*** [e…

今更ながらシリーズ(2) StringInquirer

Rails.env == 'production' という式は、 Rails.env.production? と書ける。これは Rails.env が単なる文字列ではなく、ActiveSupport::StringInquirer という String を継承したクラスに変換されているから。 https://github.com/rails/rails/blob/master/a…

今更ながら CaptureHelper

本当に今更だけど CaptureHelper なる存在を知った。maiha 氏が説明してる程度に昔からある。なんてこった。view: <% div_wrapper do %> <p>ほげほげ</p> <% end %>helper: def div_wrapper(&block) render :inline => "<div>#{capture(&block)}</div>" end 結果 <div><p>ほげほげ</p></div>

Rails3 で routes.rb を分割・追加する

故あって routes.rb を routes/frontend.rb と routes/backend.rb に分割したいとする。とりあえず、 routes.rb の中で require なり load なりしてもよいが、これだと開発中に routes/frontend.rb を編集しても、再起動しない限り反映されない。 SampleApp:…

Pound で Proxy させるとデフォルトではバックエンドよりタイムアウトの設定が短い件

[UserAgent] - Pound - Varnish - AppServer 例えば↑のような HTTP Proxy が連なった構成のとき、AppServer がうっかり固まってると(ここでは Read timeout を想定)、プロキシがそれぞれタイムアウトするわけだけど、 Pound はデフォルト設定では 15 秒後…

escape_utils

escape_utils を以前紹介したけど、その時のバージョンはバグがあったので、0.2.1 以上にした方がよいです。特に日本語のリクエストがあった場合に、情報の欠落が発生する可能性があります。 gem "escape_utils", ">= 0.2.1"あとは実は厳密には Rack の unes…

Model.scoped

ActiveRecord で Model の空のリレーションを作成するには、scoped メソッドを使うらしい。(WEB-DB PRESSに載ってたらしいけど引っ張り出せない。)https://github.com/rails/rails/blob/master/activerecord/lib/active_record/named_scope.rbri scoped す…

Vim から Evernote にポスト

とりあえず今開いてるバッファの内容を Evernote に送り付けるスクリプト。 _vimrc で設定しておけば一発で Evernote 行きだ。 nmap ,n :call WinVimToEver()<CR>Mac だと全然違うアプローチが必要そうなので Win って接頭辞つけた。winvimtoever.vim: " winvimt</cr>…

warning: regexp match /.../n against to UTF-8 string

Ruby 1.9.2-p0 + Rails3.0.0 で rake spec や rake cucumber したときに大量に Warning が出る。 /path/to/gems/rack-1.2.1/lib/rack/utils.rb:16: warning: regexp match /.../n against to UTF-8 string$VERBOSE=nil とすることでも抑止できるけど、ここで…

config/deploy/production.rb

シェルのヒストリでうっかり cap production deploy と実行してしまう時があるので、 production 環境だけプロンプト出すことにした。 config/deploy/production.rb の先頭にこれを挿入。 require 'thor' exit unless Thor::Shell::Basic.new.yes? "This is …

memcached インストール

x86_64 な CentOS 5.5 rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm rpm -ivh http://rpms.famillecollet.com/enterprise/5/remi/x86_64/remi-release-5-8.el5.remi.noarch.rpm yum --enablerepo=remi,epel i…

tail -f しながらエラーを探す

いつも忘れるのでメモ。 tail -f messages | sed "s/.*Error.*/i`echo -e '\e[1;31m&\e[0m'`/" | sed "s/^[^ ]*$/`echo -e '\e[1;32m&\e[0m'`/"

Rails3 で jquery-ujs だと IE で :disable_with が効かないよって話

jquery-ujs は、jQuery で Rails の JavaScript の機能を使うモノ。Rails では二重クリック防止のために、クリックしたら disabled になるようにこんなオプションがある。 <%= submit_tag '送信', :disable_with => '送信中…' %>だが jquery-ujs を利用した…

devise のパッチを当てるなどした

devise の挙動追ってたらこれアレがソレだよなー、ってんで github の方あたったらちょうど commit されてたのでそこだけ当てた。https://github.com/plataformatec/devise/commit/71450998c54c9258db3fa89e212c0ad0c2f6e32a1.1.4 まだかなー。でも正直 devi…

UTF-8 以外のエンコーディングで render

Rails3 は基本 UTF-8 縛り。だけど、外部との通信が絡むページとかだと cp932 とかで出力しないといけなかったりする。そこで ApplicationController あたりに対応コードを追加する。 def render_with_encoding(*options) if options[-1].is_a?(Hash) && (en…

[Ruby] Ruby Whois Gem

Ruby Whois Gem ドメイン調査をバッチ化するのに便利だなあ。 require 'whois' tlds = %w(com net jp) ARGV.product(tlds).each do |*names| domain = names.join(".") result = Whois.whois(domain).available? puts "#{domain} : #{result}" end みたいな。

最近の passenger_ruby の作り方

いろいろ間違えてた。rvm 1.9.2 --passenger をやってできなくておかしいなーと思ってたのが最初で、しかもそれも勘違いだったっていう……。まあ wrapper についてはそういうのがあります。RVM 環境下では、いつのまにか passenger-install-apache2-module コ…