「rails c」は動くけど、「rails s」が動かない現象に遭遇したので、メモしておきます。

先に結論。原因は下記でした。本番環境構築時にローカルで試しに叩いた。

% bundle config set --local without 'test development'

下記と違って、設定が残ってしまうので、解除しないといけない。

% bundle install --without test development

現象

% rails s
=> Booting Puma
=> Rails 6.1.6 application starting in development 
=> Run `bin/rails server --help` for more startup options
Exiting
bin/rails:7: warning: already initialized constant APP_PATH
/Users/xxxx/workspace/rails-app-origin/bin/rails:7: warning: previous definition of APP_PATH was here
The most common rails commands are:
 generate     Generate new code (short-cut alias: "g")
 console      Start the Rails console (short-cut alias: "c")
 server       Start the Rails server (short-cut alias: "s")
 test         Run tests except system tests (short-cut alias: "t")
 test:system  Run system tests
 dbconsole    Start a console for the database specified in config/database.yml
              (short-cut alias: "db")

 new          Create a new Rails application. "rails new my_app" creates a
              new application called MyApp in "./my_app"


All commands can be run with -h (or --help) for more information.
In addition to those commands, there are:

  about
  action_mailbox:ingress:exim
  action_mailbox:ingress:postfix
<省略>
  webpacker:yarn_install
  yarn:install
  zeitwerk:check

最初に試したのは(違ったけど)

「warning: previous definition of APP_PATH was here」の対応をしてみた。
検索すると「rails:update:bin」すると治るとの情報があった。

% rails rails:update:bin
rails aborted!
Don't know how to build task 'rails:update:bin' (See the list of available tasks with `rails --tasks`)
Did you mean?  app:update:bin
/Users/xxxx/workspace/rails-app-origin/bin/rails:9:in `'
/Users/xxxx/workspace/rails-app-origin/bin/spring:15:in `'
(See full trace by running task with --trace)

「app:update:bin」じゃないかと言われる。

% rails app:update:bin
       exist  bin
    conflict  bin/rails
Overwrite /Users/xxxx/workspace/rails-app-origin/bin/rails? (enter "h" for help) [Ynaqdhm] 
       force  bin/rails
    conflict  bin/rake
Overwrite /Users/xxxx/workspace/rails-app-origin/bin/rake? (enter "h" for help) [Ynaqdhm] 
       force  bin/rake
    conflict  bin/setup
Overwrite /Users/xxxx/workspace/rails-app-origin/bin/setup? (enter "h" for help) [Ynaqdhm] 
       force  bin/setup
    conflict  bin/spring
Overwrite /Users/xxxx/workspace/rails-app-origin/bin/spring? (enter "h" for help) [Ynaqdhm] 
       force  bin/spring
    conflict  bin/yarn
Overwrite /Users/xxxx/workspace/rails-app-origin/bin/yarn? (enter "h" for help) [Ynaqdhm] 
       force  bin/yarn
% rails s    
=> Booting Puma
=> Rails 6.1.4.1 application starting in development 
=> Run `bin/rails server --help` for more startup options
Exiting
/Users/xxxx/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.9.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': cannot load such file -- spring/watcher (LoadError)

動かない。

Gemfileを確認

group :development do
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'

developmentじゃないと使えない。

bundle config

確認

% bundle config
Settings are listed in order of priority. The top value will be used.
–delete
Set for the current user (/Users/xxxx/.bundle/config): "without"

without
Set for your local app (/Users/xxxx/workspace/rails-app-origin/.bundle/config): [:test, :development]

「–without test development」が設定されている。

解除

% bundle config --delete without

再確認

% bundle config                 
Settings are listed in order of priority. The top value will be used.
–delete
Set for the current user (/Users/xxxx/.bundle/config): "without"

「–without」が無くなった。
「rails s」も動くようになりました。

最新化

再度「app:update:bin」を実行(変更なし)

% rails app:update:bin
       exist  bin
   identical  bin/rails
   identical  bin/rake
   identical  bin/setup
   identical  bin/spring
   identical  bin/yarn

今回のコミット内容
https://dev.azure.com/nightonly/rails-app-origin/_git/rails-app-origin/commit/e2c881d20294cbe83582a20f92aff8d17d984325

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です