Rails

Enumerable#none?でReadableなコードにする

Railsにて要素が存在しないことを blank? や empty? で確かめることがある def purchased_book payments payments.none? "未購入" : "購入済み" end しかし、あるユースケースではRubyの Enumerable#none? を利用した方が意味が明らかになるので、積極的に利…

Best Practice Ruby on Rails Refactoringは、Rails開発を初めて半年のエンジニアにピッタリの本だった

Rails AntiPatterns: Best Practice Ruby on Rails Refactoring (Addison-Wesley Professional Ruby Series) (English Edition)作者:Chad Pytel,Tammer Saleh出版社/メーカー: Addison-Wesley Professional発売日: 2010/11/09メディア: Kindle版 Best Practi…

GemfileにRubyのVersionをベタ書きしない方法

GemfileにRubyのVersionをベタ書きしているプロジェクトがある。 rbenvでVersion管理を行っている場合、rbenv local 2.6.5と実行すると.ruby-versionというファイルが作られる。 $ cat .ruby-version 2.6.5 そして、Gemfileで以下の記述するとGemfileにRuby…

Railsアプリケーション初期段階のGemfileに記載されているplatformsについて調べた

rails new .でRailsアプリケーションを作成すると、Gemfileが生成されます。 source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.6.5' gem 'rails', '~> 6.0.0' ~~~~~ gem 'bootsnap', '>= 1.4.2', re…

Railsでクラスインスタンス変数とクラス変数を利用する前に、設計を見直そう

下記のようなクラスインスタンス変数を定義した後に、値を確認する方法としてAPI::APIBase.class_eval { puts @remote_host }があります。class_evalは、Moduleクラスのインスタンスメソッドでブロック内でレシーバ定義式の中であるように振舞います。 ENV['…

新規・更新を条件分岐できるpersisted?のソースコードを読んでみた

環境やバージョン $rails -v Rails 5.2.3 $ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18] ソースコードリーディング Returns true if the record is persisted, i.e. it's not a new record and it was not destroyed, otherwise ret…

Active Record joinsについて

Active Recordのjoinsとmergeについて調査したレポートです。 準備 まずは、migrationファイルを設定 class CreateUserPlans < ActiveRecord::Migration[5.2] def change create_table :user_plans do |t| t.integer :user_id t.integer :plan_code end end …

erbをslimにconvertする

Gemfileにて下記記述後、 bundle install した状態を前提。 gem 'html2slim' gem 'slim' html2slimを使います。 # erb2slim -h Usage: erb2slim INPUT_FILENAME_OR_DIRECTORY [OUTPUT_FILENAME_OR_DIRECTORY] [options] --trace Show a full traceback on er…