rails new を実行した際に、下記のエラーが表示されます

```

    rails aborted!
    TZInfo::DataSourceNotFound: tzinfo-data is not present. Please add gem 'tzinfo-data' to your Gemfile and run bundle install
    C:/Users/usera/envrionment/sample_app/config/environment.rb:5:in `<main>'
    
    Caused by:
    TZInfo::DataSources::ZoneinfoDirectoryNotFound: None of the paths included in TZInfo::DataSources::ZoneinfoDataSource.search_path are valid zoneinfo directories.
    C:/Users/usera/envrionment/sample_app/config/environment.rb:5:in `<main>'
    Tasks: TOP => app:template => environment
    (See full trace by running task with --trace)
           rails  turbo:install stimulus:install
    You must either be running with node (package.json) or importmap-rails (config/importmap.rb) to use this gem.
    You must either be running with node (package.json) or importmap-rails (config/importmap.rb) to use this gem.
    
```

Gemfileに'gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw,
:jruby]'を加えて、bundle installを実行したのですが、rails
serverを実行した際に、下記のエラーが表示され原因が何なのかわかりません。

```

    => Booting Puma
    => Rails 7.0.2.2 application starting in development
    => Run `bin/rails server --help` for more startup options
    Exiting
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:159:in `rescue in create_default_data_source': tzinfo-data is not present. Please add gem 'tzinfo-data' to your Gemfile and run bundle install (TZInfo::DataSourceNotFound)
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:156:in `create_default_data_source'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:55:in `block in get'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:54:in `synchronize'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:54:in `get'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/activesupport-7.0.2.2/lib/active_support/railtie.rb:88:in `block in <class:Railtie>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/initializable.rb:32:in `instance_exec'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/initializable.rb:32:in `run'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/initializable.rb:61:in `block in run_initializers'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:228:in `block in tsort_each'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:431:in `each_strongly_connected_component_from'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:349:in `block in each_strongly_connected_component'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:347:in `each'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:347:in `call'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:347:in `each_strongly_connected_component'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:226:in `tsort_each'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:205:in `tsort_each'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/initializable.rb:60:in `run_initializers'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/application.rb:372:in `initialize!'
            from C:/Users/kazuk/envrionment/sample_app/config/environment.rb:5:in `<main>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:35:in `require'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:42:in `require_relative'
            from config.ru:3:in `block in <main>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/server.rb:349:in `build_app_and_options_from_config'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/server.rb:249:in `app'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/server.rb:422:in `wrapped_app'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands/server/server_command.rb:76:in `log_to_stdout'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands/server/server_command.rb:36:in `start'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands/server/server_command.rb:143:in `block in perform'
            from <internal:kernel>:90:in `tap'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands/server/server_command.rb:134:in `perform'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/command/base.rb:87:in `perform'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/command.rb:48:in `invoke'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands.rb:18:in `<main>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
            from bin/rails:4:in `<main>'
    C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_sources/zoneinfo_data_source.rb:232:in `initialize': None of the paths included in TZInfo::DataSources::ZoneinfoDataSource.search_path are valid zoneinfo directories. (TZInfo::DataSources::ZoneinfoDirectoryNotFound)
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:157:in `new'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:157:in `create_default_data_source'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:55:in `block in get'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:54:in `synchronize'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/tzinfo-2.0.4/lib/tzinfo/data_source.rb:54:in `get'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/activesupport-7.0.2.2/lib/active_support/railtie.rb:88:in `block in <class:Railtie>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/initializable.rb:32:in `instance_exec'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/initializable.rb:32:in `run'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/initializable.rb:61:in `block in run_initializers'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:228:in `block in tsort_each'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:431:in `each_strongly_connected_component_from'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:349:in `block in each_strongly_connected_component'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:347:in `each'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:347:in `call'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:347:in `each_strongly_connected_component'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:226:in `tsort_each'
            from C:/Ruby31-x64/lib/ruby/3.1.0/tsort.rb:205:in `tsort_each'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/initializable.rb:60:in `run_initializers'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/application.rb:372:in `initialize!'
            from C:/Users/kazuk/envrionment/sample_app/config/environment.rb:5:in `<main>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:35:in `require'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:42:in `require_relative'
            from config.ru:3:in `block in <main>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/server.rb:349:in `build_app_and_options_from_config'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/server.rb:249:in `app'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/rack-2.2.3/lib/rack/server.rb:422:in `wrapped_app'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands/server/server_command.rb:76:in `log_to_stdout'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands/server/server_command.rb:36:in `start'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands/server/server_command.rb:143:in `block in perform'
            from <internal:kernel>:90:in `tap'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands/server/server_command.rb:134:in `perform'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/command/base.rb:87:in `perform'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/command.rb:48:in `invoke'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.2.2/lib/rails/commands.rb:18:in `<main>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
            from bin/rails:4:in `<main>'
    
```

もし何かご存じであれば教えていただけないでしょうか？
CC BY-SA 4.0
2022-03-04T10:37:45.427
86685
2023-02-23T12:07:01.050
51687
question
ruby-on-rails ruby gemfile
rails new を実行した際に、rails aborted ！というエラーが出て解決できません。
[Ruby Instnaller](https://rubyinstaller.org/)の64bit最新版 3.1.1-1 (x64)
を使用しているという前提でお話しします。もし、違っている場合は、この回答は無視してください。

* * *

Ruby
InstallerはMSYS2の開発環境を用いてRubyをビルドします。以前は、MSYS2にmingw32とmingw64の二つの開発環境しか用意されていませんでしたが、現在はclang32、clang64、ucrt64の三つの開発環境が追加されました。clangはMingw-w64
GCCの代わりにClangを用いる物ですが、ucrt64はmingw32やmingw64と同じくMingw-w64
GCCを用います。そのような経緯もあって、Ruby
Istallerの64bit版は、3.0系まではmingw64でしたが、3.1系からはucrt64に変更になりました。`ruby
-v`と実行してプラットフォームがx64-mingw-ucrtになっている事が確認できるかと思います。

問題はこのucrt64版(x64-mingw-
ucrt)です。Bundlerは`platform`でmingwやmswin等を指定できます。しかし、この機能はucrt64には対応していません。x64_mingwと指定しても、これはmingw64版の指定であって、同じくMingw-w64
GCCを用いていると言っても、ucrt64版は対象では無いと判断されます。現在の所、Bundlerにucrt64版を指定する`platform`に渡すオプションは存在しません。

ここでRalisに関わる問題が発生します。Railsはタイムゾーン情報を時刻を扱うためにtzinfoというgemを使います。このtzinfoをWindowsで使用する場合、Linuxとは違ってOSにタイムゾーンの情報のファイルが存在しないため、tzinfo-
dataという別のgemが必要になります。そのため、Railsで生成されるGemfileでは、`platform`でWindows環境になるプラットフォームを指定してtzinfo-
dataが使用するようにしています。しかし、この`platform`の指定ではucrt64版は対象とはならないため、tzinfo-
dataが読み込まれず、railsの実行に失敗する状況になっていました。

根本的に修正されるにはBundler側がucrt64版に対応することとRails側がucrt64版でもtzinfo-
dataを対象とするように初期のGemfileを用意するようにすることの二つが必要です。どちらにもissuesにすらあがっていないようですので、対応にはしばらくかかると思われます。

* * *

Bundler側とRalis側で対応されるまでは時間がかかりますので、それ以外の解決方法を三つほど紹介します。

### Gemfileでtzinfo-dataを読み込むようにする。

ucrt64版であっても、Gemfileでtzinfo-
dataを読む込むようにすれば良いとなります。まずは、下記のようなtemplate.rbを用意します。

```

    data = File.read('Gemfile')
    data.sub!(/^.*gem "tzinfo-data".*$/, 'install_if(-> { RUBY_PLATFORM =~ /mingw|mswin|java/ }) { gem "tzinfo-data" }')
    File.write('Gemfile', data)
    
```

そして`rais new アプリ名 -m template.rb`として作成すれば、エラー無く完了できるはずです。

どうしてこれでうまくいくかは、エラーになるときとのGemfileと比べてみることでわかるはずです。

### ucrt64版以外のRubyを使う。

例えば、32bit版はmingw32であるためこの問題は起きません。また、MSYS2でもRubyのパッケージが存在し、mingw64版Rubyを使うという方法もあるでしょう。

### 3.0系のRubyを使う。

3.0系まではmingw64版ですので、問題は起きません。

### Linux環境にする。

Linux環境であればtzinfo-dataそのものが不要になり、問題になることはありません。Windowsの環境であればWSLを用いたり、Hyper-
VやVirtualBox等の仮想環境でLinuxを用意すると良いでしょう。

他にも、Ruby
3.0系を使うという方法もあります。どうしても3.1系を使いたく、そして、なるべくこのようなエラーになるべく出くわしたくないという場合は、WSL上でアプリケーションを作成・開発すると良いでしょう。
CC BY-SA 4.0
2022-03-06T08:57:53.823
86716
2022-03-06T11:48:21.470
2022-03-06T11:48:21.470
7347
7347
86685
answer