Windows 上の Rails v4.1.0 サーバーの起動時に TZInfo::DataSourceNotFound エラーが発生しました

StackOverflow https://stackoverflow.com//questions/23022258

質問

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'

が必要

これは

のような痛みでした

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top