いくつかのRailsのトリック



Ruby on Railsでの作業をより良く、より速くし、より多くの収入を得て、より良い服装を実現するのに役立ついくつかのトリックを共有したいと思います。



1.コンソールでのルートとクエリ


Railsコンソールを起動し、appメソッドを呼び出します:コンソールで統合テストと同じことができるようになりました



>> app.class => ActionDispatch::Integration::Session
      
      







それは何を与えますか?



たとえば、コンソールでルートを直接テストできます。



 >> app.pages_path => "/pages" >>app.page_path(@page) => "/pages/345"
      
      







または、Railsアプリケーションにリクエストを送信します。



 >> app.get("/pages/345") => 200 >> app.response.body => "<!DOCTYPE html PUBLIC \'-//W3C//DTD XHTML 1.0 Transitional//EN\'\n ..."
      
      







アプリで利用できるすべてのメソッドは、こちらから読むことができますActionDispatch :: Integration :: Sessionおよびhere: ActionDispatch :: Integration :: RequestHelpers



2.コンソールのヘルパー


ヘルパーを使用すると、組み込みのRailsヘルパーの両方にアクセスできます。



 >>helper.mail_to "me@et.you" => "<a href=\"mailto:me@et.you\">me@et.you</a> >>helper.pluralize(2,'bug') => "2 bugs"
      
      







あなたに:



 def give_me_blog_link <a href='myblog.com'>Blog</a> end
      
      







 >> helper.give_me_blog_link => "<a href='myblog.com'>Blog</a>
      
      







しかし、ヘルパーインスタンス(クライアントなど)でインスタンスヘルパーが使用されている場合はどうすればよいでしょうか?



 def os_adviser if @client.geek? 'free bsd' elsif @client.blond? 'mac os' else 'windows' end end
      
      







この問題は、Object#instance_variable_setを使用して解決できます



 >> helper.instance_variable_set :@client, Client.first => #<Client id: 3034, ... >> helper.os_adviser => "windows"
      
      







ヘルパーがparamsのデータを使用するとどうなりますか?



 def do_you_want_meat params['meat'] ? ' ,   !' : ', ,   ' end
      
      







小さなハックはこれに役立ちます:



 >>helper.controller = OpenStruct.new( { :params => {} } ) => #<OpenStruct params={}> >>helper.do_you_want_meat => ', ,   ' >>helper.controller = OpenStruct.new( { :params => { :meat => true } } ) => #<OpenStruct params={:meat=>true}> >>helper.do_you_want_meat => ' ,   !'
      
      







3.コンソールへのセキュアな変更



コンソールを実行して実稼働サーバー上で何かをテストすると、データベース内のデータを誤って削除または変更する危険があります。 これを回避するには、コンソールの起動に--sandboxオプションを使用します



 >>rails r 'puts User.last.name' => 'Fedor' >>rails c >>user = User.last >>user.name = "Petr" >>user.save >>user.name => "Petr" >>exit >>rails r 'puts User.last.name' => 'Fedor'
      
      







4.キーによるハッシュからのアイテムの削除



リストされたアイテムをハッシュから削除し、結果を返します



 >>options = {:one => 1, :two => 2, :three => 3, :four => 4} =>{:one => 1, :two => 2, :three => 3, :four => 4} >>options.except!(:one, :two) =>{:three => 3, :four => 4}
      
      







5.文字列内の部分文字列を検索する



これは通常以下を使用して行われます



 >>string = 'corvalol' >>string =~ /lol/ => 5 #      
      
      







別の方法、私の意見ではもう少し優雅です



 >>string = 'corvalol' >>string['lol'] => 'lol' #   ,  
      
      







これらは私にとって興味深いと思われた5チップのみで、以下のリンクはそれ以上のものです。



confreaks.com/videos/889-railsconf2012-ten-things-you-didn-t-know-rails-could-do

37signals.com/svn/posts/3176-three-quick-rails-console-tips

rubyreloaded.com/trickshots

stackoverflow.com/questions/151030/how-do-i-call-controller-view-methods-from-the-console-in-rails



All Articles