demo.rake desc "task to receive args" task :demo, :arg1, :arg2 task :demo => :environment do |t, args| puts args[:arg1] puts args[:arg2] end 実行例 rake "demo[aaa,bbb]" もうちょっと普通に引数を渡したいものです。
Rails製アプリは、1画面に結構な量の情報を表示しようものなら、すぐにパフォーマンスが悪くなってしまいます。基本を押さえておけばこういったことに陥らないのですが、Railsがあまりにもサクサク開発できちゃうもんですから、ついつい調子に乗って基本を忘れてしまいがち。自分を戒めるためにも、パフォーマンス・チューニングの基本をまとめておくことにします。 環境 Rails 3.2.14 Ruby 2.0 sqlite3(データベース) WEBrick(httpサーバ) Mac Book Air 2012 Mid (デュアルコア2.0GHz Intel Core i7) チューニングするデモアプリ いまいち冴えないビジュアルのこのデモアプリ『Bookshelf(本棚)』を使用します。テーブルの1セル(td)に1冊の本が納められているつもりです。 Bookshelf仕様 著者(Author)はN件の
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
rack-mini-profiler 0.9.0.preの話。 Railsアプリで使っているrack-mini-profilerの設定を変更して、 デフォルトでは無効 URLに?pp=enabledを付ければ以降のセッション中は有効 という挙動にするため、GitHub上にあるREADMEのConfiguration Optionsを参考にconfig/initalizers/mini_profiler.rbに # Have Rack::MiniProfiler start disabled - you can use query string option to re-enable later Rack::MiniProfiler.config.enabled = false と記述してみたところ、 NoMethodError: undefined method `enabled=' fo
Ruby on Rails v3.2.11 modelクラスの中でのselfの使い方です。railsのルールというよりはrubyのルールですが、modelの中でselfを使うときに時々不安になるのでメモっておきます。 クラスメソッドとインスタンスメソッド modelクラスの中でメソッドを定義する際に、メソッド名の頭にself.をつけるとクラスメソッド、つけないとインスタンスメソッドになります。 class User < ActiveRecord::Base def hoge #インスタンスメソッド end def self.hoge #クラスメソッド (def User.hoge とやっても同じ意味) end end ちなみに使い分けですが、インスタンスメソッドはそれぞれのインスタンスに対して参照・更新するようなメソッドとして使います。一方クラスメソッドは、modelクラスのレコードを検索
Railsを使い始めてX年経ったこともあり、自分なりの開発パターンが形成されていることに気づきました。今日はそれを恥ずかしげもなく晒してみようかと思います。 Gemfile 自分の中で必須のgemたちです。その他はプロジェクトに合わせ適宜追加する感じです。 📄Gemfile source 'https://rubygems.org' ruby "2.0.0" gem 'rails', '~> 4.0' gem 'sqlite3' gem 'sass-rails' gem 'uglifier' gem 'coffee-rails' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder' gem 'draper' gem 'ransack' group :development do gem 'rack-mini-profiler' end gr
こんにちは、鈴木です。 以前のエントリで「includeされた時にクラスメソッドとインスタンスメソッドを同時に追加する頻出パターン」をご紹介しました。 今回は、それに関する定形処理を肩代わりしてくれる ActiveSupport::Concern をご紹介します。 includeされた時にクラスメソッドとインスタンスメソッドを同時に追加するパターン Before 以前のエントリ(includeされた時にクラスメソッドとインスタンスメソッドを同時に追加する頻出パターン)でご紹介していますが、おさらいしましょう。 module M def self.included(base) base.extend(ClassMethods) end module ClassMethods def foo puts 'foo' end end def bar puts 'bar' end end
Ruby on Rails (以下,Rails)標準のテスティングフレームワークである Test::Unit は,一般にはフラットにテストメソッドを定義するものだと思われています(たとえば,Rubyist Magazine - 改めて学ぶ RSpec).しかし,Test::Unit にコンテキストを導入して階層化するのは意外と簡単です.このエントリでは,Test::Unit にコンテキストを導入する方法として,ActiveSupport::TestCase にモンキーパッチを当てる方法と Shoulda を導入する方法を紹介します.さらに,一つ前のエントリで紹介した ActiveRecord モデルテストの例を Shoulda のコンテキストを使って書き直し,コードがコンパクトになることを示します. RSpec の context に憧れて 前エントリの Rails の ActiveRec
こんにちは、鈴木です。 Rails3 で論理削除をサポートするライブラリ rails3_acts_as_paranoid をご紹介します。 rails3_acts_as_paranoid (https://github.com/goncalossilva/rails3_acts_as_paranoid) rails3_acts_as_paranoid は Rails2 時代にあった acts_as_paranoid の Rails3 対応版です。 ※2013/07/25 追記: Rails4 対応版は rails4_acts_as_paranoid です。(see 「Rails4 ライブラリ対応状況調査」) 論理削除とは アプリケーション上でデータを削除する操作をした場合の方式に、物理削除と論理削除があります。 物理削除は、アプリケーション上で削除する操作をすると、実際にデータベースのレコ
Railsのgemライブラリのひとつであるdeviseはユーザの登録やサインイン(セッション処理)など全部やってくれる素敵プラグインですが、あまりにも全部を隠蔽してやってくれすぎるので、つっこんだことと組み合わせてやろうとすると、すぐに訳わかんなくなります。 そこで、今回はdeviseのユーザ管理と共に rails3_acts_as_paranoidを用いたユーザの論理削除 deviseのデフォルトの退会はレコード削除だが、これを回避する。 bcryptの暗号方式を用いた明示的なパスワード書き換え encrypted_passwordの書き換え rspec,factory_girl_railsを用いたテスト環境 deviseのモデルのテストの通し方 deviseをオーバライドした、認証、削除の拡張実装 特定のユーザをログインさせない 特定のユーザを退会させない を実装してみたいと思います。
最近になって知った Railsの便利なメソッドを紹介したいと思います。 pluck http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck User.select(:id).where("age >= ?", 20).map(&:id) こんなコードが User.where("age >= ?", 20).pluck(:id) こうなります Rails3系では指定できるカラムはひとつだけでしたが、Rails4から複数カラムを指定できるようになりました。 User.where("age >= ?", 20).pluck(:id, :name) #=> [[1, '太郎'], [2, '花子'], [3, '二郎']] Rails3系でもmultipluck というgemを使えば同じことが
Rails3では,ActiveRecordを使ったデータの取得方法にfind, find_by_XXX, find_all_by_XXX, all, whereでの絞り込みなど色々ありますが,それぞれ微妙に異なった挙動をします. ちょろいサンプルアプリを書く位ならあまり気にならない所なのですが,きちんとアプリを書く上では以外と大事なところ(後述)なので,ここいらでまとめておきます. Rails使っている人で hoge = Hoge.find(params[:id]) || Hoge.new とか書いて思った様に動かないぞ?とかハマった人向けです. 取り上げるのはfind, find_by_XXX, all, find_all_by_XXX, whereです.Railsのバージョンは3.2.8を使っています. 以下の説明では,以下のクラスが存在することを前提とします. class Hoge
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く