すべての機会に5つの宝石

Djangoブログには、このフレームワークの興味深い拡張機能のレビューを含む 投稿が定期的に見られます 。 私はこのアイデアが気に入ったので、Ruby on Railsで同様の一連のメモを作成するといいと思いました。



RoRでの作業の過去9か月にわたって、私は開発者の生活を大幅に簡素化し、特定の問題を解決するためにアドバイスできる宝石の小さなリストを蓄積しました。 この記事では、そのうちの5つについて説明します。



外国人



テーブルに外部キーを作成するための小さいながらも非常に便利な宝石。 2つの新しいメソッドadd_foreign_keyremove_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モデルがあるとします: titlecontentcreated_atupdated_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ページ



それだけです!



これが私がこのメモを終わらせる場所です。あなたがあなたにとって自分にとって有益な何かを見つけてくれることを願っています。



All Articles