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 # => "http://example.com/?a=2" uri.query_values = (uri.query_values or {}).merge('b' => '3') uri.to_s # => "http://example.com/?a=2&b=3"
" 全 半 \n 混 在 ".gsub(/(\A(\s|\u3000)+)|((\s|\u3000)+\Z)/, '') # => "全 半 \n 混 在"
Ruby【全角空白も除去】できるstrip!()ありますか? s = " 全.. - 人力検索はてな
解答例だと、途中に改行が含まれている場合の挙動が意図したものと違う
ActiveDecorator (v0.1.0) では、モデルのメソッド名とヘルパーのメソッド名が衝突した場合、モデルのメソッドが呼ばれるようです。
強制的にヘルパーのメソッドを呼び出したいときは、以下のようにすれば可能でした。
module HogeDecorator def my_truncate helper = ActiveDecorator::Helpers::DecoratorViewProxy.new helper.truncate description, length: 20 end end
Rails, Capistrano も使ってる前提です。
まず Gemfile に、プラットフォーム別のグループを作ります。
darwin, linux というグループ名でなくてもいいですが、後述のことを考えるとこれが無難です。
group :darwin do gem 'mac 用 gem' end group :linux do gem 'linux 用 gem' end
次に、config/appication.rb に以下を追加します。
if group = RUBY_PLATFORM[/(linux|darwin)/, 1] Bundler.require group end
定数 RUBY_PLATFORM の結果を使って、読み込むグループを決めています。
最後に、config/deploy.rb で、デプロイ時に不要なグループを読み込まないようにします。
set :bundle_without, [:development, :test, :darwin]
(require 'bundler/capistrano' している前提です)
rails, rspec, factory_girl, ruby
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_replacement :factory_girl, dir: 'spec/factories' end end end
% r g model Company name:string
invoke active_record
create db/migrate/20111117101239_create_companies.rb
create app/models/company.rb
invoke rspec
create spec/models/company_spec.rb
invoke factory_girl
create spec/factories/companies.rb
(alias r="bundle exec rails")
そのうち、これ書かなくても勝手にやってくれるようになりそうな気がしますが。
factory_girl_rails のソースをちょっと読んだら、勝手にやってくれそうな処理が書いてありましたが、私の環境では勝手にやってくれませんでした。。