Windows で Redmine を `bundle exec rails s -e production` で起動させるまでの奮闘記
bundle exec rails s -e production
コマンド。私もその一人でした。この記事では、試行錯誤の末に Redmine を起動させるまでに辿り着いた道のりを記録し、同じように苦労している方の少しでも参考になれば幸いです。
今回の記事の前に、Windows + Ruby 環境での Redmine インストール奮闘記 (mysql2 gem インストール編) も公開しています。こちらも参考にしていただければ幸いです: Windows + Ruby 環境での Redmine インストール奮闘記 (mysql2 gem インストール編)
最初のエラー:LoadError: Could not load the 'mysql2/mysql2.so'
Redmine のルートディレクトリで bundle exec rails s -e production
を実行したところ、最初に現れたのは LoadError
。MySQL 関連のライブラリが見つからないというエラーです。
C:/Ruby32/lib/ruby/gems/3.2.0/gems/mysql2-0.5.6/lib/mysql2/mysql2.rb:2:in `require': 126: 指定されたモジュールが見つかりません。 - C:/Ruby32/lib/ruby/gems/1.9.1/gems/mysql2-0.3.11-x86-mingw32/lib/mysql2/1.9/mysql2.so (LoadError)
このエラーに対して、以下の対応を試みました。
libmysql.dll
の配置: MySQL Connector/C のlib
フォルダからlibmysql.dll
を Ruby のbin
フォルダ (C:/Ruby32/bin
) にコピー。- パスの確認: 環境変数
Path
に MySQL のbin
フォルダ (C:/Program Files (x86)/MySQL/MySQL Connector C 6.1/bin
) が含まれていることを確認。
これらの対応により、LoadError
は解消されました。
次のエラー:Could not find a server gem. Maybe you need to add one to the Gemfile?
LoadError
を乗り越えたのも束の間、今度はサーバー gem (puma
) が見つからないというエラーが発生しました。
Could not find a server gem. Maybe you need to add one to the Gemfile?
gem "puma"
Run `bin/rails server --help` for more options.
このエラーに対して、以下の対応を試みました。
Gemfile
の確認:Gemfile
にgem 'puma'
が存在することを確認(コメントアウトされていないかも確認)。bundle install
の再実行: 依存関係を再度インストール。- Bundler キャッシュのクリア:
bundle cache clean --all
(Windows では手動でキャッシュフォルダ削除)。 Gemfile.lock
の削除と再生成:Gemfile.lock
を削除後にbundle install
を実行。
最終的に、Gemfile
の development
グループに記述されていた gem 'puma'
を、Gemfile
の直下に移動することでこのエラーは解消されました。
そして Missing secret_key_base
サーバー gem の問題が解決すると、今度は secret_key_base
が見つからないというエラーが発生しました。
Missing `secret_key_base` for 'production' environment, set this string with `bin/rails credentials:edit` (ArgumentError)
このエラーに対して、当初は config
フォルダに空の credentials.yml.enc
ファイルを作成しましたが、この状態では bundle exec rails credentials:edit
を実行しても復号に失敗しました。
最終的に、空の credentials.yml.enc
ファイルを削除した上で、以下のコマンドを実行することで解決しました。
bundle exec rails credentials:edit
このコマンドを実行すると、config/master.key
が作成され、環境によってはテキストエディタが起動して secret_key_base
を設定できる状態になります。もしテキストエディタが起動しない場合でも、config/master.key
ファイルが作成されていれば、Rails アプリケーションはそれを認識し、credentials.yml.enc
ファイルを暗号化して保存します。生成される config/master.key
の内容は、以下のような長い文字列です。
1c7a7971c74101acfc53fb551610c7a0
(実際のキーはもっと長いランダムな文字列になります)
最後の難関 listen is not part of the bundle
credentials:edit
を実行しようとした際に、listen
gem が見つからないというエラーが発生。
listen is not part of the bundle. Add it to your Gemfile. (Gem::LoadError)
このエラーに対して、Gemfile
の development
グループに gem 'listen', '~> 3.3'
を追記し、bundle install
を実行することで解決しました。
ついに起動!そして Internal error
これらの試行錯誤の末、ついに bundle exec rails s -e production
を実行したところ、Puma サーバーが起動し、Redmine にアクセスできる状態になりました!
しかし、待ち望んだメイン画面は表示されず、ブラウザには無情な「Internal error」の文字が……
Internal error
An error occurred on the page you were trying to access.
If you continue to experience problems please contact your Redmine administrator for assistance.
If you are the Redmine administrator, check your log files for details about the error.
Back
Redmine を動かすための初期設定という名の長い旅路は、どうやらまだ終わっていなかったようです。ここからは、この Internal error の原因を特定し、Redmine の本格稼働を目指す新たな戦いが始まります。まずは Redmine のログファイル (log/production.log
) を確認し、エラーの詳細を探るところから始めましょう。
まとめ
Windows 環境で bundle exec rails s -e production
を通して Redmine を起動させるまでには、本当に多くの壁にぶつかりました。この記事が、同じように Redmine の起動で苦労している方の問題解決の小さなヒントになれば幸いです。そして、Internal error の解決という次の難関に向けて、私も引き続き調査を進めていきます!