Spring
参考:
rails/spring: Rails application preloader – GitHub
jonleighton/spring-watcher-listen – GitHub
ドキュメント
参考:
Documentation for spring | RubyDoc.info
Documentation for spring-watcher-listen | RubyDoc.info
使い方
group :development do gem "listen", ">= 3.0.5", "< 3.2" gem "spring" gem "spring-watcher-listen", "~> 2.0.0" end
参考:
Rails で Spring を導入して開発効率を上げる | EasyRamble
実践 Ruby on Rails 学習ノート 初期設定編 | 珈琲駆動開発
Rails 使いよ spork, zeus から spring へ! | Act as Professional
spring stop
Spring サーバーの動作を停止させる。
$ spring stop
参考:
rails のコマンドが動かない時は spring を (stop|kill) してみよう – Qiita
開発時に rails コマンドが動かなくなったときの対処法 | Web サプリ
rails console が応答しなくなったら | Permanent Til
rails コマンドが固まったんで spring を stop したら動くようになった | あかんわ
Does the Rails Console reload initializers? – Stack Overflow
reload!
rails console
で自動読み込みされた定数を再ロードする。
> reload!
※ イニシャライザは再実行されないので注意!!
イニシャライザをリロードするためには、コンソールを一旦終了して spring stop
を実行する。
参考:
Does the Rails Console reload initializers? – Stack Overflow
config/spring.rb
参考:
Rails 5 で app 以下のディレクトリが読み込まれないとき | nyarn.tech
Rails で app 以下の変更を Spring が検知しない問題を解決した(?) | マスタカの ChangeLog メモ
spring コマンド実行時に読み込まれる ~/.spring.rb についての試行錯誤の記録 – Qiita
フォーク後にコードを実行する
Spring.after_fork do # run arbitrary code end
参考:
Running code after forking – rails/spring: Rails application preloader – GitHub
DISABLE_SPRING
参考:
3 ways to run Spring (the Rails app preloader) and how to disable it | makandra dev
Rails Spring breaking generators – Stack Overflow
SPRING_LOG
SPRING_LOG
:ログファイルを指定する環境変数
rails
コマンドの実行時にコマンドラインで指定する。
$ spring stop $ SPRING_LOG=log/spring.log rails runner 'nil'
config/spring.rb
で指定する。(※ spring server
コマンドで標準出力に何も表示されなくなるので注意)
# config/spring.rb ENV["SPRING_LOG"] = "log/spring.log"
ログファイルを指定して spring server
をバックグラウンドで実行する。
$ SPRING_LOG=log/spring.log spring server & $ tail -f log/spring.log
参考:
Environment Variables – rails/spring: Rails application preloader – GitHub
Troubleshooting – rails/spring: Rails application preloader – GitHub
プラグイン開発時に RSpec で使う
参考:
spring の導入時に application.rb が見つからない | kikukawa’s diary
spring コマンド実行時に読み込まれる ~/.spring.rb についての試行錯誤の記録 – Qiita
production 環境で spring を bundle install しない
Gemfile
で production 環境に Spring を含めない。デプロイ時に development 環境と test 環境の gem をインストールしない。
$ bundle install --without development test
参考:
Rails の bundle の without オプション | Rails Webook
rails コマンドでエラー cannot load such file — bundler/setup (LoadError) – Qiita
rails console on production uses spring · Issue #318 · rails/spring – GitHub
Update README on deployment by visibletrap · Pull Request #337 · rails/spring – GitHub
Warn if Spring is running in production by agis · Pull Request #532 · rails/spring – GitHub
エンジンの開発で Spring を使う
参考:
How to Setup RSpec, Factory Bot and Spring for a Rails 5 Engine | Mohnish G J
Spring not working fast enough with an engine · Issue #316 · rails/spring – GitHub
Spring can’t run Rails server when developing an engine · Issue #323 · rails/spring – GitHub
config/spring.rb not loaded if used within engine · Issue #144 · rails/spring – GitHub
Rails engine test/dummy with Spork, Guard, RSpec? – Stack Overflow
ハングアップ
参考:
Spring hangs a lot · Issue #396 · rails/spring – GitHub
uninitialized constant エラー
参考:
Spring returns error after a few tries · Issue #384 · rails/spring – GitHub
LoadError
参考:
エンジンで使うと Pathname がエラーを起こす
TypeError
が起こる。
TypeError: no implicit conversion of Pathname into String
原因:
config/environment.rb
が存在しない。
対応策:
config/environment.rb
を作成する。
# config/environment.rb require_relative "../test/dummy/config/environment"
it’s already loaded エラー
Spring を読み込み済みの環境から Spring を起動しようとしてエラーが発生する。
You've tried to invoke Spring when it's already loaded
対処法
bin/spring
を実行する前に Spring 関連のファイルを require
しないようにする。
参考:
spring/spring at v2.1.0 · rails/spring – GitHub
Spring and middleware conflict? – Stack Overflow
代替
参考:
Spork / Zeus / Spring によるテスト実行時間の短縮 | Ruby on Rails with OIAX