ruby
rakeタスクのログを調べやすくするために、ActiveSupport::TaggedLoggingを使って読みやすくする方法のメモ。 # lib/rake_logger_rails.rb module RakeLoggerRails # rakeタスクでログを出力するとき、自動的にタグ付けを行います。 # # task foo: :environm…
2019年の最初だし、ブログでも書いてみようという試み。 事の発端のツイート コード読んでいて違和感あるけど、修正しなくても動いている場合のレビューが難しい。例えば、無駄なメソッド呼び出しとか。def foo(x) a = x.flat_map(&:bar) (a + [1]).flattene…
なかなか読む時間が取れなくて積み本になっていたのを週末に読んだので、その感想です。 現場で使える Ruby on Rails 5速習実践ガイド(特典PDF付き)作者: 大場寧子,松本拓也,櫻井達生,小田井優,大塚隆弘,依光奏江,銭神裕宜,小芝美由紀出版社/メーカー: マイ…
omotesandorb.connpass.com 忙しくて2ヶ月くらい表参道.rbに行けてなかったけど、今回は参加できた。 今回の会場は外苑前の株式会社ビジネスバンクグループさんで、懇親会の時に軽食の提供があった。 ありがとうございます。 LT資料 毎日gemをアップグレード…
Ruby のしくみに面白いコードが書かれていました。 class Hash def key?(val) puts "Looking for key #{val}" false end end def add_two(a: 2, b: 3) a+b end puts add_two(a: 1, b: 1) # Looking for key a # Looking for key b # 5 キーワード引数は内部…
実務では一切の役に立たないRuby雑学。 普通のdef まずは基本の書き方。 def foo puts "hello" end foo #=> "hello" class User def self.foo puts "foo" end class << self def bar puts "bar" end end end User.foo #=> "foo" User.bar #=> "bar" 特異クラ…
defの中にdefを書いたらどうなるのか? そんな実験。 class Nanoha def starlight_breaker puts "魔力が足りません" end def battle! def starlight_breaker puts "全力全開、スターライトブレイカー!" end end end user = Nanoha.new user.starlight_break…
Ruby難しい。この無名クラスは一体何者なんだ...class A class << self class B end endendp A.singleton_class.const_get(:B).ancestors#=> [#<Class:0x00007fe8c203c980>::B, Object, Kernel, BasicObject]— 神速 (@sinsoku_listy) 2018年4月30日 class A class << self class B end </class:0x00007fe8c203c980>…
タイトルは半分くらい釣りです。役に立たないRuby雑学です。 コード例 モジュールで self.new を定義すると、モジュールに対してnewが呼べる。 class A end module M def self.new A.new end end p M.new.class #=> A 別のクラスのインスタンスを返すクラス …
何度もレビューで指摘することはRuboCopのルールとして追加して、自動化しておくと便利です。 この記事では、RuboCopで新しいルールを作る方法を紹介します。 参考にしたページ これがとても参考になった。 github.com Copの書き方は独特なので、RuboCopリポ…
where.not を使っていて遭遇した問題についてrailsdmの懇親会で話していたら、@kamipo さんから「5.2では少し直っている」という情報を頂いた。 この話をしているときに思ったけど、今の where.not の問題点について知らない人も多そうなので、せっかくなの…
Rails Developers Meetup 2018 Day 1で「Railsアプリの育て方」という発表をしました。 railsdm.github.io 発表資料 余談 本当は4月から放送されるシュタインズゲートゼロみたいな流れにしたかったけど、ちょっと上手く話の流れを作れなかったので、今回は普…
ToDo アプリを題材にして、参加者で相互レビューする勉強会。 step-to-rails-expert-rb.connpass.com コード持ち込んだ 今までサボっていたので、今回は課題を解いて持ち込んでみた。 github.com Ruby/Rails のアップグレードなどが含まれている関係で、変更…
Rails アプリの開発環境じゃなくて、 rails/rails にプルリクを送るための開発環境を作る方法です。 rails-dev-box について Rails には Contributing to Ruby on Rails guide というドキュメントがあり、 誰でも簡単に開発環境を作ることができます。 5.1.1…
先日、仕事のコードで遭遇して「なんだこの動き...」と思ったので、ブログに書いておく。 Rails クイズ: 次のコードで rollback されるのはどれでしょう?(配点10点) 常にバリデーションエラーになるモデル Bomb と no 属性によってコールバックを制御できる…
一応、お仕事で Ruby やっているプロだけど、本の内容が気になったので買ってみました。 昨日、先行販売している紀伊國屋書展 新宿本店で購入(正式発売日は11月25日)。 新宿紀伊国屋は残り2冊だった。危ない。ギリギリだったけど、なんとかプロになれそう…
#rubykaigi のツイートを眺めていたら、会社から補助が出てそうな方々のツイートを見かけて、タイトルの件を思いついたので、雑にスクリプトを書いてみた。 RubyKaigi のスポンサー企業であれば、おそらく参加費補助や3日間休むことに理解あるところが多いん…
自分用の備忘録。このコード、ブログに書いておかないと忘れそうなので… やりたかったこと RubyKaigi の型の話を聞いて、「メソッドの実行を上書きして、引数の型を読み取る」ってことができないかなと思いついて実装したコード。 コード 既存の出力を { ...…
Rails で OAuth 連携の機能を作う場合、一般的に OmniAuth を使うことになります。 そして、 OmniAuth の Qiita Strategy が3つあったので、それぞれ状況をまとめました。 各 gem の概要 GitHub rubygems version work? tmiyamon/omniauth_qiita omniauth_qi…
6/1(木) の表参道.rb でLTしてきました。 omotesandorb.connpass.com 資料 「他人がどうやって Ruby/Rails を学んできたのか?」って意外と聞く機会は無いと思うので、自分のふりかえりも兼ねて発表してみました。資料は Qiita で公開してます。 qiita.com …
技術書典は書く側で参加したい気持ちはあるけど、書くネタと書く時間があるかどうか…— 神速@リリカルエンジニア (@sinsoku_listy) 2017年4月9日 あー、自分の知ってるRailsアンチパターンとか書きたいかも。自分の犯した罪(アンチパターン)を贖罪したい…。— …
CircleCI 2.0 が使えるようになっていたので、アップグレードしておいた。 CircleCI の設定 今まで circle.yml だったけど、 .circleci/config.yml に変わっている。 Ruby の設定例は Language Guide: Ruby があるので、これを参考にすると良い。 version: 2…
2/18(土) と 2/25(土) に Speee さんのもくもく会に参加して、 gem が出来たので紹介。 speee.connpass.com bundler_diffgems bundler_diffgems は bundle update を支援するための CLI ツールで、GitHub の比較URL を簡単に表示できます。*1 インストール方…
タイトルの通りだけど paiza.IO API を見つけた時にふと思い浮かんだので試してみた。 まぁ、これ動いちゃったら paiza.IO のリソースを使い潰せるので、ちゃんと対策してるんだろうなー。 コード 1 FizzBuzz です。途中にある p はデバッグ目的のやつ。 req…
普通にみんなやっていることだと思うけど、自分が gem を入れるときに最低限やることをまとめてみた。 何かしらの方法で探してきた gem を「導入するかどうか」の判断をするときにやることです。 やること一覧 今後もメンテされそうかを調べる README を 全…
Rails アプリから機能を gem 化する方法の実例を1つ公開してみる。 sinsoku.hatenablog.com rake notes を拡張する rake notes で Rails アプリ内の "OPTIMIZE|FIXME|TODO" を一覧表示できるが、これを拡張する。 ソースコードの探し方 rails/rails のリポジ…
これから Rails 用の gem を作ってみたい人向けの内容。 gem 化する 実は下記のようなコードを置くだけで RubyGems に登録しなくても、 gem として認識される。 Gemfile gem 'hello_world', path: 'lib/hello_world' lib/hello_world/hello_world.gemspec # …
Rails の link_to_if にブロックを渡したときの挙動が分かりづらいので、使う場合の注意点をまとめてみました。 TL;DR ブロックの内容を条件によってリンクにしたい場合は capture を使うのがシンプルで良いです。 <% body = capture do %> <%= image_tag 'i…
7/16(土)〜18(月)の2泊3日で開発合宿に参加していて、前々からやりたかった tachikoma_ai の gem のアップデートをしました。 開発合宿について、詳しくは id:niwatako さんが記事を書かれているので、興味ある方はそちらを参照して下さい。 niwatako.hatena…
毎回、忘れて困るのでメモ。 bundle install $ bundle install --gemfile=gemfiles/rails_5.gemspec BUNDLE_GEMFILE=gemfiles/rails_5.gemfile bundle install でも動くっぽい。 bundle exec $ BUNDLE_GEMFILE=gemfiles/rails_5.gemfile bundle exec rspec …