【パーフェクト Ruby on Rails】を読む - その14

3-2-5 RailsとRackの関係

Railsアプリケーションはrackupで起動可能です

RailsはRackの仕様に則ったアプリケーションなので

$ bundle exec rackup

コマンド実行後、ブラウザのlocalhost:9292で起動できます。

rails newすると config.ru というファイルがあり、このファイルがあることがRackアプリケーションであるという証拠になります。

config.ruファイルに明記されていませんがどのようなRackミドルウェアを利用しているかを確認するには% bin/rails middlewareで確認できます。

私の環境では以下の通りでした。

% bin/rails middleware
use Webpacker::DevServerProxy
use Rack::MiniProfiler
use ActionDispatch::HostAuthorization
use Rack::Sendfile
use ActionDispatch::Static
use ActionDispatch::Executor
use ActiveSupport::Cache::Strategy::LocalCache::Middleware
use Rack::Runtime
use Rack::MethodOverride
use ActionDispatch::RequestId
use ActionDispatch::RemoteIp
use Sprockets::Rails::QuietAssets
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use WebConsole::Middleware
use ActionDispatch::DebugExceptions
use ActionDispatch::ActionableExceptions
use ActionDispatch::Reloader
use ActionDispatch::Callbacks
use ActiveRecord::Migration::CheckPending
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::ContentSecurityPolicy::Middleware
use ActionDispatch::PermissionsPolicy::Middleware
use Rack::Head
use Rack::ConditionalGet
use Rack::ETag
use Rack::TempfileReaper
run AppName::Application.routes

多い…。

ミドルウェア内の記述で破壊的メソッドのgsub!が出てきたので復習しました

p "もとみち".gsub!("もと", "") #=> "肉みち"  
!は破壊的メソッドで、元あった"もと"を消し去り、""として生まれ変わります。

今回、本書で書かれていたパターンは正規表現を置き換え元にしていたので同様のコードを書き、紐解いてみました。↓

p "hoge".gsub!(/hoge/i,"肉おいしい")#=>"肉おいしい"
# /i の部分で含まれている大文字小文字関係なく変換する
p "hoge".gsub!(/Hoge/i,"肉おいしい")#=>"肉おいしい"
p "hoge".gsub!(/hoGe/i,"肉おいしい")#=>"肉おいしい"

↓paizaで検証しました。

正規表現をちゃんと言葉にできなかったので調べました

正規表現」という単語が出てきたら「曖昧な感じで指定できるんだな~」という事です。正規なのに曖昧って面白いですね。🤷‍♀️

ひとこと

正規表現/xyz/i/iって何だろう?となって、それがフラグだと知れたのが楽しかったです。うん感動した!😈

参照

本書の中にあった'gsub!'メソッド
正規表現
正規表現リファレンス