Gemfile は、以下の通りです。koala gem は、Facebook を処理するライブラリです。 gem 'devise', '2.1.2' gem 'omniauth-facebook', '1.4.1' gem 'koala', '1.6.0' config/initializers/devise.rb の facebook 設定に、scope オプションを追加します。 ウォ…
まず、Qt と xvfb を入れます。 sudo aptitude install libqt4-dev xvfb Gemfile に、headless gem を追加します。 group :test do ... gem 'capybara' gem 'database_cleaner' gem 'launchy' gem 'capybara-webkit' gem 'headless' ... end spec/spec_helpe…
ImageMagick 系のエラーを表示しない 画像以外のファイルをアップロードされたらエラーを表示する 最大サイズを 5MB に制限 という場合です。content_type はこれでいいのか、ちょっと自信がありません。 has_attached_file :photo, whiny: false # whiny: f…
SlideShare や Speaker Deck のスライドを、縦に並べて表示する「SSSSLIDE」というサービスをやっています。 このたびリニューアルし、スライド検索機能を追加しました。 SSSSLIDE Twitter でつぶやかれたことのある、日本語スライドを中心に検索できます。 …
Ruby on Rails で Solr による検索を行う Sunspot に関して、私が運用上設定している内容を公開します。 config/sunspot.yml の設定 Sunspot (v1.3.3 現在) では、ジョブやタスクでインデックスを追加・更新した場合、自動でコミットが行われません。 そのた…
Sunspot (v1.3.0) で特定のモデルを再インデックスする場合、 rake "sunspot:solr:reindex[,Model]" としろと README に書いてあるのですけれど、これだと [,Model] の設定が無視されるようです。 rake "sunspot:reindex[,Model]" なら大丈夫です。 関連 URL…
~/.zshrc などに export PATH=./bin:$PATH を追記し、bundle install を binstubs オプション付きで実行。 最小限パターン % bundle install --binstubs rbenv を使っているとき % bundle install --binstubs --shebang ruby-local-exec rbenv 使用 + vendor…
Resque のプラグインで、Delayed::Job のように自動リトライをしてくれる resque-retry というものがあります。で、 Resque::Failure::MultipleWithRetrySuppression.classes = [Resque::Failure::Redis] Resque::Failure.backend = Resque::Failure::Multip…
SlideShare や Speaker Deck のスライドを、縦に並べて表示する「SSSSLIDE」というサービスを作りました。 SSSSLIDE SlideShare や Speaker Deck は大変素晴らしいサイトだと思うのですが、1 ページごとにポチポチとクリックする必要があり、ちょっと不便で…
acts_as_digested_on という gem を 3 年前に作ったのですが、Rails 3.1 から動かなくなっていたので修正しました。 モデルに 1 行追加するだけで、SHA1 ハッシュを自動でカラムに保存するというものです。 https://rubygems.org/gems/acts_as_digested_on h…
Addressable::URI を使うと、割ときれいに書ける気がします。忘れるのでメモ。 require 'addressable/uri' uri = Addressable::URI.parse('http://example.com').normalize uri.query_values = (uri.query_values or {}).merge('a' => '2') uri.to_s # => "h…
" 全 半 \n 混 在 ".gsub(/(\A(\s|\u3000)+)|((\s|\u3000)+\Z)/, '') # => "全 半 \n 混 在" 参考 Ruby【全角空白も除去】できるstrip!()ありますか? s = " 全.. - 人力検索はてな 解答例だと、途中に改行が含まれている場合の挙動が意図したものと違う
ActiveDecorator (v0.1.0) では、モデルのメソッド名とヘルパーのメソッド名が衝突した場合、モデルのメソッドが呼ばれるようです。 強制的にヘルパーのメソッドを呼び出したいときは、以下のようにすれば可能でした。 module HogeDecorator def my_truncate…
Rails, Capistrano も使ってる前提です。 まず Gemfile に、プラットフォーム別のグループを作ります。 darwin, linux というグループ名でなくてもいいですが、後述のことを考えるとこれが無難です。 group :darwin do gem 'mac 用 gem' end group :linux do…
rails (3.1.1)、rspec-rails (2.7.0)、factory_girl_rails (1.3.0) という環境です。 config/application.rb の config.generators に設定を書くだけです。 module Hoge class Application < Rails::Application ... config.generators do |g| g.fixture_rep…
自社サービスを Rails 3.1.1 にバージョンアップさせたので、メモです。 Asset Pipeline を使用する前提です。 参考にさせていただいた記事 だいたい以下を熟読したら何とかなりました。ありがとうございます。 Ruby on Rails Guides: Ruby on Rails 3.1 Rel…
追記(2011/10/06 16:00): Homebrew で readline をインストールする記述が抜けていたので、追加しました。 また、一部記述ミスも修正しました。申し訳ありません。 rvm の調子がなんか悪いので、シンプルで、37signals 中の人が作ったという rbenv + ruby-bu…
今まで iPhone を使っていたのですが、興味があって Android 携帯を購入しました。 いろいろ考えた結果、SIM ロックフリーの Xperia neo (赤) という機種を購入しました。 購入 1shopmobile というお店で買いました。 http://www.1shopmobile.com/catalog.ph…
Mac でインストーラを使ってインストールした場合、以下のスクリプトでアンインストールすることができます。 % sudo /Developer/Tools/uninstall-qt.py 参考 http://forums.macrumors.com/showthread.php?t=587092
おそらく csrf_token なしで戻ってくるからです。 なので、たとえば、callback 後のメソッドが SessionsController#create なら、 class SessionsController < ApplicationController protect_from_forgery :except => :create ... end のようにします。 参…
config/routes.rb Hoge::Application.routes.draw do ... match '/auth/:provider/callback' => 'sessions#create' match '/auth/failure' => 'sessions#failure' ... end app/controllers/sessions_controller.rb class SessionsController < ApplicationCo…
最近、スカパーで「スペースシャワーTV プラス」を契約しました。 一日中音楽 PV が流れています。家で作業することが多くなったので、BGM 代わりに良いです。(月630円) ただ、今流れている曲を確認するために、テレビを見ないといけないのは結構面倒です。 …
livedoor Reader に、はてなブックマークのコメントを表示する LDR Hatebu Comments というグリモンを以前作りました。 そして今回、それの Google Chrome 拡張版を作りました。 https://chrome.google.com/extensions/detail/lmdjjmpmkjmjdpijdiadmfbpcaoic…
使ってみました。Rails3 用のようです。 spork を使っていた場合は、spec/spec_helper.rb の spork 関連処理を削除しておきます。 また .rspec に --drb オプションが書いてあると、prefetch-rspec がうまく動かないようです。 まずは Gemfile に prefetch-r…
MySQL で、データベース・テーブル・カラムなどに collate = utf8_unicode_ci を指定すると、大文字・小文字・全角・半角・ひらがな・カタカナなどの表記揺れが吸収されます。 たとえば、「たろう」と「タロウ」の検索結果が同じになります。 参考: mysqlのc…
3月31日で前職を退職し、4月1日から独立して働くことになりました。 また、株式会社ユーザーファーストという法人を設立しました。 会社を作った理由はいろいろありますが、会社作るの面白そう、と思ったことが一番の理由でしょうか。 この本の影響を受けた…
Delayed::Job では、例外が発生した場合、 5 秒 + リトライ回数 ** 4秒経過した後にリトライしてくれますが、これを変更する方法です。 Delayed::Job のバージョンは、2.1.4 です。 やり方は簡単で、ジョブのクラスに、リトライ時刻を返す reschedule_at メ…
あけましておめでとうございます。Mechanize 1.0.0 のお話です。 example.com?xx=yy のようにパラメータのついた URL のページから、action 属性が空のフォーム <form action=""> を送信すると、パラメータ無しの URL (example.com) に送信されてしまいます。 agent = Mechan</form>…
iTerm で Command キーを Meta キーの意味にするパッチ (SnowLeopard, iTerm 0.10) - milk1000cc これの iTerm2 版です。今回は Command と Alt を入れ替えるので、Alt + v でペーストできます。 インストール $ curl https://gist.github.com/raw/737855/it…
class FiltersController < ApplicationController before_filter { |c| c.logger.info 'before_A' } before_filter { |c| c.logger.info 'before_B' } before_filter { |c| c.logger.info 'before_C' } after_filter { |c| c.logger.info 'after_A' } after…