質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Q&A

解決済

1回答

1718閲覧

bundle installで書き込み許可がなくエラー発生

hocca

総合スコア3

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

0グッド

0クリップ

投稿2020/07/17 11:12

前提・実現したいこと

RubyでRspec学習のために、サイトの手順に従って環境構築をする際にbundle installを実行したところエラーが発生しました
これを解決したいです

発生している問題・エラーメッセージ

There was an error while trying to write to `Bundler does not have write access to create a temp directory within C:/Users/user_name/AppData/Local/Temp. Bundler must have write access to your systems temp directory to function properly. `. It is likely that you need to grant write permissions for that path.

該当のソースコード

# frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } gem "rspec", ">= 3.0.0"

試したこと

bundle installのパーミッションエラーについて、.bundle/configに
BUNDLE_PATH: vendor/bundle
と記述するようにという記事がありましたが、私はこれでは解決しませんでした

補足情報(FW/ツールのバージョンなど)

Windows10 OS
ruby 2.6.5
Bundler version 2.1.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raccy

2020/07/17 11:22

"user_name"の部分に漢字やカタカナ、または、スペースが含まれていたりしますか?
hocca

2020/07/18 06:31

漢字が含まれています
guest

回答1

0

ベストアンサー

次のどちらかを検討してください。

  1. 英数字のみのユーザー名でWindowsのユーザーを作り直して、そのユーザーで開発してください。
  2. WSLを使用してください。

【1.の解説】

RubyおよびRubyの各ライブラリ(bundlerを含む)は元々UNIX/Liunx向けに作られているため、Windows特有の処理について対応できていない所があります(これは、Ruby以外のUNIX/Linux向けに作られた多くのプログラミング言語で言えることなので、Rubyだけの特徴ではありません)。特にファイル名やディレクトリ名にASCII(英数字等)以外の文字(漢字やひらがな等)が含まれていると、文字コードを正しく処理する必要があるのですが、Windowsでは、ASNIとしてはWindows-31J、ワイド文字としてはUTF-16と内部処理が複数の文字コードを扱えるところに、Rubyは内部エンコードがデフォルトでUTF-8なのですが、コンソール表示はそのコンソールの文字コード(Windows-31Jだったり、UTF-8だったり)にあわせる必要があるなど、かなり複雑な処理が必要です(現在ほとんどのUNIX/LinuxはUTF-8で統一されているため、あまり問題は起きません)。そのため、ファイルやディレクトリのパスの途中に漢字などのASCII以外の文字が含まれる場合、文字の処理がうまくいかず、対象のファイルやディレクトリにアクセスできない現象が発生する事があります。(これ以外にも、スペースが含まれるとうまくいかない場合があります。これは、シェル経由で実行しようとする場合に発生しますが、現在は稀です。)

解決方法は三つです。

  1. 原因を追及し、Rubyまたはライブラリを修正する。
  2. 漢字等が含まれないパスになる場所を指定する。
  3. 漢字等が含まれないパスになるように環境を変更する。

最初の1.はかなりの知識が無いと難しいです。もし、簡単にできるのであれば、既に修正されているはずだからです。次の2.ですが、今回はTEMPの場所なので、そこの環境変数だけを変えればうまくいくかも知れません。ただ、何を変えれば良いのかを詳しく調べる必要がありますし、また、どこかでまた同じことが発生する度に、対応が必要になってきます。

ということで、最終的な3.が一番簡単です。漢字の部分はユーザー名です。つまり、ユーザー名さえ、英数字であれば問題ないと言うことです。

既存のユーザーのユーザー名を変更する方法は一応あります。しかし、**お勧めはしません。**まず、ユーザー名だけではなく、ユーザーのプロファイルディレクトリを変更する必要があるからです。これを変更するには、GUIで名前を変更というようなやり方ではできません。Windowsがどのようにプロファイルを持っているのか(あるレジストリに書いてあるのですが)等をよく知った上で、手動でファイルの移動やレジストリの変更等をする必要があります。中途半端な知識ではトラブルの元なので、安易に行ってはいけません。(操作方法を間違うと、最悪ログインできなくなります)

ということで、既存のユーザーはすっかりサッパリ諦めて、新規に英数字のみのユーザーを作成してください。それが一番簡単で、確実です。以下、その手順です。

  1. 設定→アカウント→家族とその他のユーザー→その他のユーザーをこのPCに追加
  2. 「このユーザーのサインイン情報がありません」をクリック
  3. 「Microsoftアカウントを持たないユーザーを追加する」をクリック
  4. ユーザー名を英数字のみにして適当に作成
  5. 作成後、作成されたユーザーについて「アカウントの書類の変更」を押して、必要であれば「管理者」に変更

Microsofアカウントの紐付け等が必要な場合は、後で行ってください。ドキュメント等にあるファイルは移行されませんので、適当にコピーしてください。各アプリの設定の移行は難易度が高いため、設定し直しする事をお勧めします。


【2.の解説】

上で述べたとおり、Windows特有の問題が発生する可能性が高いことを述べました。逆に言うとLinux環境では問題は起きないと言うことです。Windows 10には簡単に用意できるLinux環境を公式に備わっています。それが、

Windows Subsystem for Linux (WSL)

です。Windows特有の問題に悩まされたくない場合は、WSLを用いることをお勧めします。ただし、WSLを利用にあたって、次のことに注意してください。

  • Windows 10 64bitである必要があります。(WSL2は32bitでも可能という情報がありますが、不明です)
  • WSL2はWindows 10 2004にアップデートしておく必要があります。(WSLはそれ以前も可能)
  • Linuxについての基礎的な知識(少なくともターミナルでcdとかのコマンドが使える)が必要です。

投稿2020/07/18 07:02

編集2020/07/18 07:15
raccy

総合スコア21739

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hocca

2020/07/18 14:02

新規ユーザーを作成する方法で解決することができました。 詳細な手順まで教えてくださり助かりました、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問