7 Patterns to Refactor Fat ActiveRecord Models という記事があり、読もう読もうと思いつつ1年くらい経ってしまった。 ようやく読んだので理解した内容を書いておく。 コード例は元記事のもの。 Rails で thin controller, fat model を心がけていると、model がマジで激太りしてヤバくなる。 実際に自分が仕事で書いている rails アプリも激太りしててヤバい。 この blog の筆者が作っている CodeClimate で C 判定をもらう程度には肥満体型になっている。 Mixinに抜き出さない! Model が太ってきた時に考えるのは ActiveSupport::Concern を使って感心事を抜き出して、Mixin にすることだと思う。 実際に手元のアプリでも models/concerns/ なんていうディレ
メモ。一つ謎が解けたので。 Rails3ではメールを扱うクラスがTMailからMailクラスに変わりました。そのせいか、素朴に日本語のメールを送る場合、文字コードはISO-2022-JPではなく、UTF-8になります。まあUTF-8になるのはいいとして、問題はこれがbase64なのでした。ううむ。 この辺りはMail::Messageクラスの挙動になるっぽいのですが、メール送信時にContent-Transfer-Encodingヘッダを指定することはできます。 # UserMailerクラスのメソッドの中の定義 mail(:to => email, :content_transfer_encoding => '8bit', :subject => I18n.t("hoge")) ところが、ここで設定しても、実際に送信される時にはbase64になってしまうのでした。うう。 というわけで困っ
RailsRailsのレールにうまく乗るのは難しいなぁと日々実感する毎日。ということで最近思っていることをメモ程度に。 fixture は使わない、代わりにmachinistかfactory_girl もうこりごりです。 fixture。 感想&理由はあとで書く 手動テストデータをどうするか。 fixture を自動テストで使っている場合、どうしてもinvalidなデータが入る。動かない。yaml_waml や yaml_db を使ってDBダンプしたデータを使うとどうか。 まぁ machinist とか使う場合は rake db:fixtures:load でもいいか。 マスターはymlで書く。fixtureみたいな感じで読み込めばいい。(DBのマスタデータをfixtureからロード - I am Cruby!) マスターデータに id は絶対に振ること。id : 235121651 と
Just a small collection of tips/tricks which I use a lot ( or try to ), that others might find helpful. concerned_with In most of the Rails applications that I work with, the primary model ( User model for example ) ends up being at least 1000 lines long. Thanks to Rick’s quick/awesome solution, we can easily split a model into different “concerns”. RAILS_ROOT/config/initializers/concerns.rb class
Photo by mondopiccolo Capistranoではdeployしても、前のソースが残っているために、すぐに前のバージョンに戻せますが、データベースはそうはいきません。 そこで、deploy:migrationsを実行する前に自動でDBのバックアップを取るようなタスクを探してみました。 MySQL専用ですが、これでローカルのbackupsというディレクトリに、migration実行前のダンプがダウンロードされます。 require 'yaml' desc "Backup the remote production database" task :backup, :roles => :db, :only => { :primary => true } do filename = "#{application}.dump.#{Time.now.to_i}.sql.bz2" fi
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Koz recently checked code into core that kicks and screams all the way home if you’re using deprecated methods or instance variables. In honor of this I’ve decided to give you a list of things I still see over and over in Rails code that you really shouldn’t be doing anymore. Really. Trust me on this. Update: There’s been enough controversy over this article that I’ve responded.Accessing Instance
MySQLのあるテーブルにINDEXをつけていたのだけれど、フィールドの型がTEXTだったので、「最初の500文字まで」という制限をかけていた。(MySQLではINDEXをつけられる文字数に制限がある)ところがこの文字数制限、RailsのSchemaDumperではダンプできない。 で、Schema中にはSQLを直接書いていたのだけれど、それだとテストができないのだ。 rakeでテストを走らせると、「開発用DBからRuby形式でテーブル形式をダンプ→それをテスト用データベースに適用」する。のだけれど、上述の制限がうまく動いていない。SQL形式でダンプするやり方があるだろうと探したのだけれど、見つける前にRuby形式に適当に手を入れた方が早そうだと思った。ので、作った。 # インデックスの制限もDumpできるようにする module ActiveRecord module Connectio
From: Hiroshi Takagi <gollum@h...> Date: Mon, 05 Dec 2005 00:49:50 +0900 Subject: [rails:739] Re: 悩ましい日付型, date_select, select_date 高木宏です。 On Sun, 04 Dec 2005 19:44:44 +0900 Kazuhiro Yoshida <moriq@m...> wrote: > もりきゅうです。 > > Hiroshi Takagi <gollum@h...> wrote: > > 1. render :action => 'new' もしくは render :action => 'edit' > > でエラーメッセージとともに最表示されたフォーム上では、 > > 不正な日付が入力されたフィールドの値は、デフォルトのDate.todayに > >
This domain may be for sale!
今日は、emacs で Rails でのコーディングをする上での tips を紹介します。 その名も grep-gems コマンドです。 これを実行することで、/usr/lib/ruby/gems/1.8/gems/ 以下のディレクトリに対して再帰的に grep を実行します。 私はメソッドの定義や、テストプログラムでのそのメソッドの使われ方を調べるときによく利用しています。 正直言って、現在でも Ruby On Rails ではかなり多くのメソッドは、まだ、充分にドキュメントが整備されているとはいえない状況です。 そのため、今でもソースを読み込むことが自分がやりたいことが可能かどうかを調査する一番優れた方法となってしまっています。Rails のソースを全文検索することはどうしても必要不可欠な作業です。 しかしながら、繰り返し行っていると、生産性が落ちます。DRY の原則にも反します。だい
久々にしっかりとはまったので、メモを残しておきます。 やりたかったことRuby on Railsをお試しでインストールして、アプリケーションをつくったのですが、 CGIだとやはりとてもとても遅いので、fastCGIで動かすことを決意。 つまり、Ruby on Railsが速く動くなるようになればよい。 はまった点Gentooで、emerge mod_fastcgiを実行すると、Apache-1.3がインストールされてしまう。。 Apache-2のモジュール(/usr/lib/apache2/module)を確認してみると 明らかにfastcgiポイ、fcgid.soを見つける。 ただ、設定の仕方が全然分からない。。。。 適当にやっていると。 Application error Rails application failed to start properly 全然だめじゃん。 ということ
帰省、寿司、陶芸体験 8/13(火) 妻の実家の墓参りへ行き、俺の実家へ帰省。風呂に入る前に子供達と外で水鉄砲で水を掛け合いびしょ濡れになる。最後のほうはどうにでもなれと思い、ホースやバケツで直接水をかけ合う。久しぶりの大胆な遊び方に子供たちは大声をあげながら騒いでいるが、田…
● 複数のRails環境 えっと、複数のRails環境を用意する方法ですが、単に最新版の trunk を使うだけの場合は % rake freeze_edge とやるのだと思いますが、好みに応じて複数のバージョンを使い分けたかったり、trunk が手元にある場合にわざわざまた取得するのも冗長だったり、ということで、私は生々しく手作業でやっています。 ● Rails スクリプトの実行のメカニズム Rails スクリプトの実行のメカニズム的には、 % ruby script/XXX が実行されると、まずスクリプト(から呼ばれた config/boot.rb)内で、 "#{RAILS_ROOT}/vendor/rails" があるかどうかがチェックされます。存在すれば、その下の Rails パッケージ(activerecord, ...) が利用され、存在しなければ、システムにインストールされて
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く