概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Be sparing when using unless - Andy Croll 原文公開日: 2018/01/07 著者: Andy Croll Ruby: unlessはここぞというときまで使わないこと(翻訳) Rubyの強みのひとつに素敵な組み込みシンタックスシュガーがありますが、unlessキーワードもそのひとつです。否定文で使われるifをunlessで置き換えることができます。 しかし、Rubyのシンタックスが自由なために、あっという間にコードが必要以上に理解しづらくなってしまいます。 次のように書いてはいけない 心が折れるunless。 # 例1 unless something? # 何かする else # 他のことをする end # 例2 unless something? || another_thing? #
Railsで開発をしていると、たくさんSQLを実行しているサーバだと development.log の出力が多すぎて追うのが大変になります。 こういう時、別ファイルに出力させたいのですが、以下のように行えばOKです。 また、log/ 以下は gitignore されていることがほとんどだと思うので、log以下にファイルを置くと良いです。 Logger.new('log/out.log').info( "ログ出力したい文言" ) 出力例は以下のようになります。 I, [2019-01-15T18:59:25.132692 #6825] INFO -- : ログ出力したい文言 Rails外の場合だと、require が必要です。 require "logger" Logger.new('out.log').info( "ログ出力したい文言" )
Ruby on Rails Advent Calendar 2017 19日目の記事です。 RailsでAPI開発するときのJSONレスポンスの生成方法についてまとめてみました。 JSONレスポンスの生成方法について RailsのHTTPレスポンスをJSONで生成する方法は以下の2つに分類されます renderメソッドにjson引数を指定する(モデル方式) templateハンドラでレンダリングする(ビュー方式) ライブラリでいうとactive_model_serializersは1のモデル方式、jbuilderやjbは2のビュー方式になります。 モデル方式はrenderメソッドにjson引数が指定されているとActionController::Renderers#_render_with_renderer_json が呼び出され、指定したオブジェクトのto_jsonメソッドが呼び出される
Gemを作っていた時に、どうしても依存しているGemの挙動を変える必要があったので、どういう方法があるのか調べてみた。 継承 + Mixinまず、普通にmoduleを作成して、classをオープンしてincludeする。もちろん Rubyのクラス継承チェインの上位に上書きしたいmoduleが来てしまうため無理。 クラス継承普通にクラスを継承して、上書き。 オープンクラス + alias_methodextendしていることを明確にするためにmoduleをincludeする形にしたが、classをopenして、alias_methodを使うのと同じで、想定通りの挙動になる。 delegation(委譲)継承やオープンクラスをしないで、メソッドの実行を委譲することもできるっぽい。 DelegateClass(Country)でCountryオブジェクトにインスタンスメソッドを委譲するクラスが定
Rubyとは?まず初めにRubyについて簡単に説明させていただきます。 Rubyとは日本人(まつもとゆきひろ氏)が開発したことでも有名ですが、ここまで支持されているのには他にも沢山の理由があります。それは言語の柔軟性と分かりやすさです。 現在、世界で最も普及している言語は恐らくJavaでしょう。 ただJavaとは大きな違いがあります。それはRubyが「オブジェクト指向スクリプト言語」だということです。一方Javaは「コンパイラ言語」と呼ばれています。JavaやC言語などのコンパイラ言語はコンパイル(人が書いたコードを機械の命令に変換)して初めてプログラムを実行できます。一方、Rubyのようなオブジェクト指向スクリプト言語はコンパイルが一切必要なく、そのまま実行できるのでコンパイラ言語よりも簡単にプログラミングを行えます。 オブジェクト指向とはオブジェクト指向とはソフトウェアの開発をより簡単
backtrace -> [String][permalink][rdoc][edit] バックトレース情報を返します。 デフォルトでは "#{sourcefile}:#{sourceline}:in `#{method}'" (メソッド内の場合) "#{sourcefile}:#{sourceline}" (トップレベルの場合) という形式の String の配列です。 例 def methd raise end begin methd rescue => e p e.backtrace end #=> ["filename.rb:2:in `methd'", "filename.rb:6"] [SEE_ALSO] Exception#backtrace_locations
begin raise StandardError.new("Message") rescue => e p e.class #=> StandardError p e.message #=> "Message" p e.backtrace #=> ["(repl):4:in `<main>'", "/run_dir/repl.rb:41:in `eval'", "/run_dir/repl.rb:41:in `run'", "/run_dir/repl.rb:57:in `handle_eval'", "/run_dir/repl.rb:170:in `start'", "/run_dir/repl.rb:177:in `start'", "/run_dir/repl.rb:181:in `<main>'"] end
Send feedback JavaScript quickstart Stay organized with collections Save and categorize content based on your preferences. Quickstarts explain how to set up and run an app that calls a Google Workspace API. Google Workspace quickstarts use the API client libraries to handle some details of the authentication and authorization flow. We recommend that you use the client libraries for your own apps.
delete_if {|x| ... } -> self[permalink][rdoc][edit] reject! {|x| ... } -> self | nil delete_if -> Enumerator reject! -> Enumerator 要素を順番にブロックに渡して評価し、その結果が真になった要素をすべて削除します。 delete_if は常に self を返しますが、reject! は要素が 1 つ以上削除されれば self を、 1 つも削除されなければ nil を返します。 ブロックが与えられなかった場合は、自身と reject! から生成した Enumerator オブジェクトを返します。返された Enumerator オブジェクトの each メソッドには、もとの配列に対して副作用があることに注意してください。 例 a = [0, 1, 2, 3, 4,
業務でrspecを使っているのですが、 rspecは車輪の再発明だと言われたり、 DHHはminitestがおすすめだったり、 minitestのほうが速いと言われていたりする記事を見て、 「なんかminitestのほうが強そうやん」という思いを馳せ、 調べてみたのでご報告でございます。 基本的に、以下2つを参考にいたしました ・RSpecユーザのためのMinitestチュートリアル サンプル ・RSpecとMinitest、使うならどっち? expect(A).to eq Bはassert_equal B, A 比較は以下になります。 rspecでexpect(A).to eq Bでしたが、 minitestではassert_equal B, Aのようになります。 この違いはrspecの記述がDSL(ドキュメント風)なのに対して、 minitestはピュアRubyであるという違いから生ま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く