RoRでの作業の過去9か月にわたって、私は開発者の生活を大幅に簡素化し、特定の問題を解決するためにアドバイスできる宝石の小さなリストを蓄積しました。 この記事では、そのうちの5つについて説明します。
外国人
テーブルに外部キーを作成するための小さいながらも非常に便利な宝石。 2つの新しいメソッドadd_foreign_keyとremove_foreign_keyを移行に追加します。
そのため、たとえば、 コメントテーブルからユーザーテーブルにキーを追加する必要がある場合は、次の手順を実行する必要があります。
class CreateComments < ActiveRecord::Migration def change create_table :comments do |t| # … t.references :user # ... end # … add_foreign_key :comments, :users end end
Githubページ
ペースカー
thoughtbotからの人々からの非常に興味深い宝石。 その本質は、接続先のモデルを分析し、この分析に基づいてさまざまなスコープメソッドを追加することです。
テーブルにフィールドを持つpostモデルがあるとします: title 、 content 、 created_at 、 updated_at 。 そしてhas_many:commentsという接続があります 。 モデルにPacecarを追加します。
class Post << ActiveRecord::Base include Pacecar has_many :comments, :dependent => :destroy end
その後、たとえば、このようなスコープが使用可能になります。
Post.title_matches('Some title') # LIKE "%term%" Post.created_at_before(5.days.ago) # , 5 Post.maximum_comments #
Gemにはいくつかの便利なメソッドが追加されています。詳細についてはGithubをご覧ください。
Githubページ
設定ロジック
アプリケーションの設定の問題を解決する非常に多くの宝石があります。 私の意見では、最も成功しているのは悪名高いBen Johnsonの Settingslogicです。 シンプルで軽量、YMLファイルを使用します。
gemの作成者は、 Settingsクラスを使用して、モデル( app / models / settings.rb )の隣に保存することをお勧めします 。
class Settings < Settingslogic source "#{Rails.root}/config/application.yml" namespace Rails.env end
この場合の設定ファイルはconfig / application.ymlに保存されます :
defaults: &defaults default_email: admin@example.com development: <<: *defaults test: <<: *defaults production: <<: *defaults
設定は、現在のRails環境に関連して呼び出されます。 設定クラスを介してそれらにアクセスできます。
Settings.default_email # admin@example.com
Githubページ
ドキュメント
letter_opener
Rain Batesによる原作者の宝石スタブ。 作業の意味は非常に簡単です-アプリケーションの構成(たとえば、config / enviroments / development.rb)で、 letter_openerをメール配信の方法として使用することを示します。
config.action_mailer.delivery_method = :letter_opener
その後、すべての送信メールが/ tmp / letter_openerフォルダーに追加され始め、送信直後の各文字が新しいブラウザータブで開きます。 シンプルで便利。
Githubページ
不滅の
Teambox開発者からのジェム。これにより、エントリを削除する代わりに「削除済み」としてマークできます。 不注意なユーザーをデータ損失から保護したい場合に非常に便利です。
gemを使用するには、レコードを「不滅」にしたいテーブルに削除済みフィールドを追加する必要があります。
class AddDeletedToTasks << ActiveRecord::Migration def change add_column :tasks, :deleted, :boolean end end
次に、目的のモデルに接続します。
class Task << ActiveRecord::Base include Immortal end
これで、 タスクモデルの各エントリは、データベースから完全に削除されるのではなく、削除済みとしてマークされます。
Githubページ
それだけです!
これが私がこのメモを終わらせる場所です。あなたがあなたにとって自分にとって有益な何かを見つけてくれることを願っています。