Windows で Redmine を `bundle exec rails s -e production` で起動させるまでの奮闘記

Redmine を Windows 環境で動かそうとした際に、多くの方がつまずくであろう 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)

このエラーに対して、以下の対応を試みました。

  1. libmysql.dll の配置: MySQL Connector/C の lib フォルダから libmysql.dll を Ruby の bin フォルダ (C:/Ruby32/bin) にコピー。
  2. パスの確認: 環境変数 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.

このエラーに対して、以下の対応を試みました。

  1. Gemfile の確認: Gemfilegem 'puma' が存在することを確認(コメントアウトされていないかも確認)。
  2. bundle install の再実行: 依存関係を再度インストール。
  3. Bundler キャッシュのクリア: bundle cache clean --all (Windows では手動でキャッシュフォルダ削除)。
  4. Gemfile.lock の削除と再生成: Gemfile.lock を削除後に bundle install を実行。

最終的に、Gemfiledevelopment グループに記述されていた 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)

このエラーに対して、Gemfiledevelopment グループに 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 の解決という次の難関に向けて、私も引き続き調査を進めていきます!

コメントする

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