AmazonのCloud9で、RubyとRailsを学習しており、VisualStudioCodeでも同じように使えるようにしたいと環境の構築から始めましたが、Rubyは問題なく出来ましたがRailsの環境構築が上手くいきません。

`Rails new アプリケーション名` を実行すると以下のエラーが表示されます。  
エラーの原因がRubyに起因するものなのか？そもそも、Railsのインストールに起因するのかが判りません。  
他の方の似たようなエラー対処の回避方法を参考にしましたが、なお同じ状況です。

```

          create  README.md
          create  Rakefile
          create  .ruby-version
          create  config.ru
          create  .gitignore
          create  .gitattributes
          create  Gemfile
             run  git init from "."
    Initialized empty Git repository in C:/Users/ｘｘｘ/sample3/.git/
          create  app
          create  app/assets/config/manifest.js
          create  app/assets/stylesheets/application.css
          create  app/channels/application_cable/channel.rb
          create  app/channels/application_cable/connection.rb
          create  app/controllers/application_controller.rb
          create  app/helpers/application_helper.rb
          create  app/jobs/application_job.rb
          create  app/mailers/application_mailer.rb
          create  app/models/application_record.rb
          create  app/views/layouts/application.html.erb
          create  app/views/layouts/mailer.html.erb
          create  app/views/layouts/mailer.text.erb
          create  app/assets/images
          create  app/assets/images/.keep
          create  app/controllers/concerns/.keep
          create  app/models/concerns/.keep
          create  bin
          create  bin/rails
          create  bin/rake
          create  bin/setup
          create  config
          create  config/routes.rb
          create  config/application.rb
          create  config/environment.rb
          create  config/cable.yml
          create  config/puma.rb
          create  config/storage.yml
          create  config/environments
          create  config/environments/development.rb
          create  config/environments/production.rb
          create  config/environments/test.rb
          create  config/initializers
          create  config/initializers/assets.rb
          create  config/initializers/content_security_policy.rb
          create  config/initializers/cors.rb
          create  config/initializers/filter_parameter_logging.rb
          create  config/initializers/inflections.rb
          create  config/initializers/new_framework_defaults_7_0.rb
          create  config/initializers/permissions_policy.rb
          create  config/locales
          create  config/locales/en.yml
          create  config/master.key
          append  .gitignore
          create  config/boot.rb
          create  config/database.yml
          create  db
          create  db/seeds.rb
          create  lib
          create  lib/tasks
          create  lib/tasks/.keep
          create  lib/assets
          create  lib/assets/.keep
          create  log
          create  log/.keep
          create  public
          create  public/404.html
          create  public/422.html
          create  public/500.html
          create  public/apple-touch-icon-precomposed.png
          create  public/apple-touch-icon.png
          create  public/favicon.ico
          create  public/robots.txt
          create  tmp
          create  tmp/.keep
          create  tmp/pids
          create  tmp/pids/.keep
          create  tmp/cache
          create  tmp/cache/assets
          create  vendor
          create  vendor/.keep
          create  test/fixtures/files
          create  test/fixtures/files/.keep
          create  test/controllers
          create  test/controllers/.keep
          create  test/mailers
          create  test/mailers/.keep
          create  test/models
          create  test/models/.keep
          create  test/helpers
          create  test/helpers/.keep
          create  test/integration
          create  test/integration/.keep
          create  test/channels/application_cable/connection_test.rb
          create  test/test_helper.rb
          create  test/system
          create  test/system/.keep
          create  test/application_system_test_case.rb
          create  storage
          create  storage/.keep
          create  tmp/storage
          create  tmp/storage/.keep
          remove  config/initializers/cors.rb
          remove  config/initializers/new_framework_defaults_7_0.rb
             run  bundle install
    C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `match?': invalid byte sequence in UTF-8 (ArgumentError)
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `chop_basename'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:374:in `plus'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:354:in `+'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:420:in `join'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:445:in `global_config_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:93:in `initialize'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `new'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `settings'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/env.rb:20:in `report'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:74:in `request_issue_report_for'   
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:53:in `log_error'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:126:in `rescue in with_friendly_errors'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:118:in `with_friendly_errors'      
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:36:in `<main>'
    C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `match?': invalid byte sequence in UTF-8 (ArgumentError)
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `chop_basename'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:374:in `plus'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:354:in `+'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:420:in `join'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:445:in `global_config_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:93:in `initialize'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `new'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `settings'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/feature_flag.rb:21:in `block in settings_method'      
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:106:in `<class:CLI>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:6:in `<module:Bundler>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:5:in `<top (required)>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:38:in `require_relative'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:38:in `block in <main>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'      
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:36:in `<main>'
             run  bundle binstubs bundler
    C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `match?': invalid byte sequence in UTF-8 (ArgumentError)
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `chop_basename'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:374:in `plus'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:354:in `+'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:420:in `join'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:445:in `global_config_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:93:in `initialize'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `new'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `settings'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/env.rb:20:in `report'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:74:in `request_issue_report_for'   
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:53:in `log_error'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:126:in `rescue in with_friendly_errors'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:118:in `with_friendly_errors'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:36:in `<main>'
    C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `match?': invalid byte sequence in UTF-8 (ArgumentError)
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `chop_basename'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:374:in `plus'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:354:in `+'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:420:in `join'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:445:in `global_config_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:93:in `initialize'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `new'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `settings'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/feature_flag.rb:21:in `block in settings_method'      
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:106:in `<class:CLI>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:6:in `<module:Bundler>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:5:in `<top (required)>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:38:in `require_relative'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:38:in `block in <main>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'      
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:36:in `<main>'
           rails  importmap:install
    C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `match?': invalid byte sequence in UTF-8 (ArgumentError)
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `chop_basename'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:374:in `plus'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:354:in `+'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:420:in `join'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:445:in `global_config_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:93:in `initialize'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `new'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `settings'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:111:in `configured_bundle_path'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:96:in `bundle_path'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:651:in `configure_gem_home_and_path'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:82:in `configure'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:206:in `definition'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:155:in `setup'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/setup.rb:10:in `block in <top (required)>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ui/shell.rb:136:in `with_level'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ui/shell.rb:88:in `silence'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/setup.rb:10:in `<top (required)>'
            from <internal:C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
            from <internal:C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
            from C:/Users/ｘｘｘ/sample3/config/boot.rb:3:in `<top (required)>'
            from bin/rails:3:in `require_relative'
            from bin/rails:3:in `<main>'
           rails  turbo:install stimulus:install
    C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `match?': invalid byte sequence in UTF-8 (ArgumentError)
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `chop_basename'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:374:in `plus'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:354:in `+'
            from C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:420:in `join'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:445:in `global_config_file'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:93:in `initialize'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `new'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:342:in `settings'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:111:in `configured_bundle_path'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:96:in `bundle_path'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:651:in `configure_gem_home_and_path'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:82:in `configure'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:206:in `definition'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:155:in `setup'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/setup.rb:10:in `block in <top (required)>'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ui/shell.rb:136:in `with_level'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ui/shell.rb:88:in `silence'
            from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/setup.rb:10:in `<top (required)>'
            from <internal:C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
            from <internal:C:/Ruby31-x64/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
            from C:/Users/ｘｘｘｘ/sample3/config/boot.rb:3:in `<top (required)>'
            from bin/rails:3:in `require_relative'
            from bin/rails:3:in `<main>'
    
```
CC BY-SA 4.0
2022-12-07T01:50:22.527
92611
2022-12-10T11:17:22.587
2022-12-08T11:37:43.447
55818
55818
question
ruby-on-rails
VisualStudioCodeでRailsの環境構築が上手くできません
メッセージからWindows環境であると推測されるため、Windowsであることが前提です。Windows以外の環境の場合はご指摘下さい。

* * *

Windows上で直接Ruby on
Ralisを実行する場合は、複数の注意事項があります。うまくいかないという場合、複数の原因が考えられ、それぞれ一つ一つ確認する必要があります。

この回答は下記バージョンで検証しました。バージョンが異なる場合、解決策ではうまくいかない、別の不具合が発生する可能性があります。その場合は、コメント等でご指摘下さい。

  * OS: Windows 11 21H2 (64ビット)
  * Ruby: 3.1.2p20 x64-mingw-ucrt (RubyInstaller)
  * Ralis: 7.0.4
  * Git: 2.38.1.windows.1 (Git for Windows)

## 原因究明編

それぞれの場合で発生する現象とその原因について述べます。解決策は概要のみで詳細は後述します。

### ユーザー名にASCII(英数字)以外の文字が含まれる場合

ユーザー名を設定するときに[ASCII](https://ja.wikipedia.org/wiki/ASCII)(半角の英数字や記号)以外の文字(平仮名・片仮名・漢字など和文に使用する文字)を含めてしまった場合、ユーザープロファイルのパスにそのユーザー名が含まれることで、一部の動作が正常に動作しなくなります。

#### 原因: 環境変数`TMP`にASCII以外の文字がある。

環境変数`TMP`(デフォルトはユーザープロファイル配下の`C:\Users\【ユーザー名】\AppData\Local\Temp`です)にASCII以外の文字がある場合、`gem
install rails`実行時や`bundle install`の段階で下記のようなメッセージが表示され、コンパイルエラー等により失敗します。

>
```

>     Error: can't open C:\Users\【文字化けしたユーザー名】\AppData\Local\Temp\【ランダムな文字列】.s
> for reading: Illegal byte sequence
>  
```

コンパイラーであるgcc等が環境変数`TMP`を参照しますが、ASCII以外の文字が含まれていると正しく処理できないためです。

  * 解決策A1: ASCIIのみのパスのフォルダーを作成し、環境変数`TMP`を設定する。
  * 解決策B: ASCII文字のみのユーザープロファイルを使用する。
  * 解決策C: システム全体をUTF-8に設定する。

※ 一部のプログラムは環境変数`TEMP`も見に行きますが、環境変数`TMP`のほうが優先順位が高いため、設定しなくても問題ありません。

#### 原因: ホームディレクトリにASCII以外の文字がある。

Rubyがホームディレクトリだと判定する場所(デフォルトはユーザープロファイルと同じ`C:\Users\【ユーザー名】`です)にASCII以外の文字がある場合、`bundle
install`の段階で下記のようなメッセージが表示され、ライブラリをインストールできず、失敗します。

>
```

>     C:/Ruby31-x64/lib/ruby/3.1.0/pathname.rb:50:in `match?': invalid byte
> sequence in UTF-8 (ArgumentError)
>  
```

bundlerがホームディレクトリを基にユーザーの設定ファイルを探しますが、そこにASCII以外の文字が含まれていると正しく処理できないためです。

  * 解決策A2: ASCIIのみのパスのフォルダーを作成し、環境変数`HOME`を設定する。
  * 解決策B: ASCII文字のみのユーザープロファイルを使用する。
  * 解決策C: システム全体をUTF-8に設定する。

※ Windowsでのホームディレクトリは、次の順番で探しに行きます。

  1. 環境変数`HOME`
  2. 環境変数`HOMEDRIVE`+環境変数`HOMEPATH` (ホーム フォルダーを設定した場合に設定される)
  3. 環境変数`USERPROFILE` (ユーザープロファイルのパス)

### アプリを作成したフォルダーにASCII(英数字)以外の文字が含まれる場合

`rails
new`するときのアプリ名がASCIIのみであっても、そのフォルダーのフルパスにASCII以外の文字が含まれていると、一部の動作が正常に動作しなくなります。

#### 原因: アプリのフルパスにASCII以外の文字がある。

アプリのフルパスにASCII以外の文字がある場合、`rails
importmap:install`の段階で下記のようなメッセージが表示され、実行エラーにより失敗します。

>
```

>     Errno::E-01: The operation completed successfully. -
> bs_fetch:open_current_file:open
>  
```

一部のライブラリでアプリのフルパスにASCII以外の文字が含まれていると正しく処理できないためです。

  * 解決策D: ASCIIのみのパスのフォルダーでASCIIのみのアプリ名のRailsアプリを作成する。
  * 解決策C: システム全体をUTF-8に設定する。

※ ユーザーがASCIIのみの場合でも発生します。

### RubyInstaller 3.1系以上 x64版を使用している場合

これはRubyInstallerのRubyで、バージョンが3.1系以上、かつ、x64版の場合のみの対応です。バージョン3.0系以下やx86版では問題は発生しません。

#### 原因: Rubyのプラットフォームがx64-mingw-ucrtである。

`ruby -v`とするとRubyのバージョンと共に[プラットフォームを表す文字](https://docs.ruby-
lang.org/ja/latest/method/Object/c/RUBY_PLATFORM.html)が表示されます。これが、`x64-mingw-
ucrt`の場合、`rails importmap:install`の段階で下記のようなメッセージが表示され、実行エラーにより失敗します。

>
```

>     TZInfo::DataSourceNotFound: tzinfo-data is not present. Please add gem
> 'tzinfo-data' to your Gemfile and run bundle install
>  
```

Windows環境では tzinfo-data ライブラリが必要です。Railsが最初に生成するGemfileでは、プラットフォームが`%i[ mingw
mswin x64_mingw jruby ]`の場合に tzinfo-data をインストールするとなっていますが、x64-mingw-
ucrtの場合はいずれにもあてはまらなくなるからです。

解決策E: Gemfileを修正する。  
解決策F: 3.0系またはx86版を使用する。  
解決策G: RubyInstaller以外のRubyを使用する。

## 解決編

原因究明編であげた解決策をそれぞれ説明していきます。

なお、解決策を実施後は **失敗したところからやり直してください** 。`rails
new`で失敗している場合、作成されたアプリを一度削除してから、`rails
new`を実行してください。一度失敗している場合、セットアップが中途半端になっており、その後の作業がうまくいきません。もし、どこからうまくいっていないかわからない場合は、Rubyをインストールするところからやり直してください。

### 解決策A1/A2: ASCIIのみのパスのフォルダーを作成し、環境変数を設定する。

適当なフォルダーC:\TempやC:\Home等を作成し、PowerShellやコマンドプロンプトで環境変数をそれらのフォルダーに設定します。

```

    $Env.TMP = "C:\Temp"
    $Env.HOME = "C:\Hmoe"
    
```

```

    set TMP=C:\Temp
    set HOME=C:\Hmoe
    
```

毎回実行する必要があることに注意して下さい。また、.gemrcなどのユーザーの設定は環境変数`HOME`から探すようになります。

### 解決策B: ASCII文字のみのユーザープロファイルを使用する。

新しくASCIIのみのユーザー名のユーザーを作成して下さい。その新しいユーザーでRailsアプリを作成し、開発を行って下さい。

**現在のユーザーでユーザープロファイルのパスを変更することはできません。**
ユーザー名を変更してもユーザープロファイルのパスは変更されません。ユーザープロファイルのパスはレジストリ`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\ProfileList`配下にあり、その値が変更されないからです。レジストリエディタ等で無理矢理変更することで見に行く先を変えることはできますが、複雑な手順でプロファイルのコピーなどが行っていないとプロファイルが壊れてしまい、最悪ログオンできなくなります。Windowsに非常に詳しくないかぎり、成功することはありません。

### 解決策C: システム全体をUTF-8に設定する。

この方法はWindowsの **ベータ機能** です。設定によって、古いアプリケーションが動作しなくなる場合がありますので、ご注意下さい。

  1. 「設定」を開きます。
  2. 時刻と言語 > 言語と地域 > 関連設定 にある「管理用の言語の設定」を開きます。
  3. 管理タブのUnicode 対応ではないプログラムの言語 にある「システム ロケールの変更」 を開きます。
  4. 「ベータ: ワールドワイド言語サポートで Uincode UTF-8 を使用」にチェックを入れ、「OK」を押します。
  5. 再起動します。

### 解決策D: ASCIIのみのパスのフォルダーでASCIIのみのアプリ名のRailsアプリを作成する。

Cドライブ直下などに適当なフォルダーを作成して、そこでRailsアプリを作成するだけです。

### 解決策E: Gemfileを修正する。

[別の質問の私の回答](https://ja.stackoverflow.com/a/86716/7347)を参照して下さい。

### 解決策F: 3.0系またはx86版を使用する。

RubyInstallerの3.0系やx86版を使用します。3.0系x64版でも3.1系x86版でも大丈夫です。

### 解決策G: RubyInstaller以外のRubyを使用する。

[MSYS2](https://www.msys2.org/)の環境でもWindowsで動作するコンパイル済みRubyは使用できます。ただし、UCRT64環境は同じ問題が発生するため、問題解決のための利用の場合は避けて下さい。

その他、自分でコンパイルするという手段もあります。

### 解決策Z: WSLを使用する。

最後に、WSLでの利用を推奨しておきます。

現在の最新環境でもWindowsでは上のような問題が発生します。過去にはnokogiriやsqlite3の最新バイナリが提供されずエラーになる問題とか、一部のdllを別途コピーする必要あったりとか、なにかと苦労させられてきました。ここからMySQL等のDBまでWindowsで検証しようとすると、結構苦労することになります。

RubyはもともとLinuxをメインターゲットとして開発されており、Railsを初めとしたRubyの多くのフレームワークやライブラリもLinuxが第一ターゲットで他のOSは二の次です。ですので、Windowsでの動作はテストしていない場合も多く、問題があっても対応がとても遅い(そのほとんどがコア開発者に環境が無いとか、Linux以外に詳しくないとか)場合があります。ですので、Linux以外で動作させる場合は、逆に、それなりの知識が無いと難しいです。つまり、Linuxで動かした方が、簡単に、しかも、うまく行きやすいと言うことです。

幸運なことに、最新のWindowsであれば、ほとんどの環境でWSLが使用できます。インストール方法も簡単です。

```

    wsl --install
    
```

これひとつで、WSL環境のセットアップから、Ubuntuのインストールまで行ってくれます。Visual Studio
Codeであれば、WSL拡張を使うことで、そのままWSLの環境も触ることができます。後は好きな方法でRubyをインストールして、Railsを試すだけです。

多分これが一番早いと思います。
CC BY-SA 4.0
2022-12-09T05:55:20.207
92661
2022-12-10T11:17:22.587
2022-12-10T11:17:22.587
7347
7347
92611
answer