Windows 上の Rails v4.1.0 サーバーの起動時に TZInfo::DataSourceNotFound エラーが発生しました
-
21-12-2019 - |
質問
Ruby on Rails v4.1.0 を使用して新しいアプリケーションを作成しました。Windows でサーバーまたはコンソールを起動しようとすると、次のエラーが発生します。
$ rails server
Booting WEBrick
Rails 4.1.0 application starting in development on ....
Exiting
c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/tzinfo-1.1.0/lib/tzinfo/data_source.rb:199:
in `rescue in create_default_data_source':
No timezone data source could be found. To resolve this, either install
TZInfo::Data (e.g. by running `gem install tzinfo-data`) or specify a zoneinfo
directory using `TZInfo::DataSource.set(:zoneinfo, zoneinfo_path)`.
(TZInfo::DataSourceNotFound)
from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/tzinfo-1.1.0/lib/tzinfo/data_source.rb:196:
in `create_default_data_source'
このエラーを解決するにはどうすればよいですか?
解決
エラーの解決
このエラーを解決するには、tzinfo-data gem が Gemfile
.
まず最初に、あなたのものを確認してください Gemfile
への既存の参照があるかどうかを確認するには tzinfo-data
. 。まだ参照がない場合は、次の行を追加します。
gem 'tzinfo-data'
すでに次のような行があることに気づくかもしれません。
gem 'tzinfo-data', platforms: [:mingw, :mswin]
Windows で 64 ビット バージョンの Ruby を使用している場合は、次を追加します :x64_mingw
次のようにプラットフォームのリストに追加します。
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]
あるいは、 platforms
完全にオプション。
これを実行した後、実行します bundle update
コマンドラインで tzinfo-data gem をインストールすると、Rails サーバーまたはコンソールを起動できるようになります。
背景
の TZInfo::DataSourceNotFound
このエラーは、Rails の Active Support コンポーネントの依存関係である TZInfo によって発生します。TZInfo はシステム上のタイム ゾーン データのソースを探していますが、見つかりません。
多くの Unix ベースのシステム (例:Linux)、TZInfo はシステムを使用できます ゾーン情報 ディレクトリをデータソースとして使用します。ただし、Windows にはそのようなディレクトリが含まれていないため、代わりに tzinfo-data gem をインストールする必要があります。tzinfo-data gem には、Ruby モジュールのセットとしてパッケージ化された同じzoneinfo データが含まれています。
Rails はデフォルトを生成します Gemfile
アプリケーションが最初に作成されたとき。アプリケーションが Windows 上で作成されている場合は、tzinfo-data の依存関係が含まれます。ただし、(Rails バージョン 4.1.0 の時点では) これは省略されています。 :x64_mingw
プラットフォームのリストにないため、Ruby の 64 ビット Windows バージョンでは正しく動作しません。これ 修正されるべきです 将来の Rails リリースで。
他のヒント
サーバーを起動するように2つの宝石を追加しなければならなかった..
gem 'tzinfo-data'
gem 'tzinfo'
その後バンドルインストール
これをあなたのアプリの端末に入れてください:
gem install tzinfo-data
.
それからgemfile行を次のように変更します。
gem 'tzinfo-data', platforms: [:x64_mingw, :mingw, :mswin]
.
それからあなたのターミナルで:
bundle update
.
それは直接問題を解決する
GEMファイルに次の行を追加
gem 'tzinfo-data'、プラットフォーム:[:x64_mingw、:mingw、:mswin]
DockerコンテナにRedmineをインストールしようとすると、そのエラーが発生しました:
RAILS_ENV=production bundle exec rake db:migrate
.
Package tzdata
がUbuntu Imageにインストールされていないため、エラーが発生しました。
apt-get update && apt-get install tzdata -y
.
トリックをしました。
TZINFOがシステムにインストールされていない場合は、それをインストールしてみてください。
gem install tzinfo
gem install tzinfo-data
. 私もこの問題を抱えていて、:x64_mingw
の両方をtzinfo-data
のプラットフォームのリストとGEM 'tzinfo'の両方をGemFileに追加して修正しました。それからバンドルインストール。
MacOS Mojave 10.14.5でこの問題に遭遇し、MacOSのシンボリックリンクが正しい提供されたゾーン情報ファイルを読み取っていなかったことがわかりました。
ファイルがコマンドを使用している場所でこれを追跡することができました
TZInfo::ZoneinfoDataSource.search_path
と["/usr/share/zoneinfo", "/usr/share/lib/zoneinfo", "/etc/zoneinfo"]
の出力を提供しました。
私は/usr/share/zoneinfo
を探し始め、読み取るためのファイルがありました。しかしレールはまだそれらを見つけて、それらを読んで実行していませんでした。そのため、/usr/share/zoneinfo.default/
の他のファイルから/etc/zoneinfo
(最後のパスTZINFOを探す)
だからこの問題を解決するために私がこの問題を解決するために働いたコマンドは、ln -s /usr/share/zoneinfo.default /etc/zoneinfo
この情報は将来の誰かに役立ちます。
だから、宝石は正しく取り付けていないようではなかったので、次の
をしなければなりませんでしたgem 'tzinfo-data' gem 'tzinfo'
それから
バンドルショー すべての宝石
を見るためにバンドルgem tzinfo. GEMのディレクトリ
を取得します
その後、そのディレクトリに移動します。tzinfo-dataをtzinfoにまとめる必要があります。 tzinfo-dataファイルで、に進みます。 local_pathname / tzinfo-data-1.2014.5 / lib / tzinfo このディレクトリのすべての内容を...にコピーします。 local_pathname / tzinfo-1.2.1 / lib / tzinfo. (私のためにこれは 'データ'ファイルと 'データ'のディレクトリをコピーすることを意味しました)
go local_pathname / tzinfo-1.2.1 / lib ファイルを開き、(ディレクトリではありません) そしてこの行を追加してください 'tzinfo / data'
が必要これは
のような痛みでした