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

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

ただいまの
回答率

89.64%

Rails の開発構築の際に出るエラー

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,469

stynjoe

score 11

このサイト(https://www.sejuku.net/blog/39936#VirtualBox)を参考に
Ruby と Ruby on Rails の開発構築をしているのですが、Rails のインストール作業として、

$bundle install --path vendor/bundler

 
を実行したのですが、下記エラーが発生しました。

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

[!] There was an error parsing `Gemfile`: You cannot specify the same gem twice with different version requirements.
You specified: rails (~> 5.1.6) and rails (~> 5.1.4therubyracer). Bundler cannot continue.

おそらく、異なるバージョンを複数回指定することはできません的な事を言ってるんと思うんですが、どうすれば解消できるでしょうか。
上記サイトの手順通りにやっていたんですが、二点ほど違う手順を踏んでしまいました。
一つは「gem “rails” のコメントを外す」の意味が分からず、

sed -i 's/# gem "rails"/gem "rails", "~> 5.1.0"/g' Gemfile

をそのままコピーして実行してしまった事。
(実は未だに確信がないのですが、#←を消すってことでしょうか?間違ってたらごめんなさい。正直自信ないです)
もうひとつは、railsチュートリアルを学ぶための環境構築なので、railsチュートリアルでrailsのバージョンを5.1.4に指定するとあったので、後で二度手間になると思い、上記コードの5.1.0を5.1.4に書き換えて実行したことです。

よくわからないのは5.1.6です。このバージョンは書き込んだ覚えがないのです。
分かる方、教えて頂きたいです。

>dyoshikawaさん
こういうことでよろしいのでしょうか?間違ってたらすみません!

[vagrant@localhost ~]$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.14.1
  - RUBY VERSION: 2.4.4 (2018-03-28 patchlevel 296) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/vagrant/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0
  - USER INSTALLATION DIRECTORY: /home/vagrant/.gem/ruby/2.4.0
  - RUBY EXECUTABLE: /home/vagrant/.rbenv/versions/2.4.4/bin/ruby
  - EXECUTABLE DIRECTORY: /home/vagrant/.rbenv/versions/2.4.4/bin
  - SPEC CACHE DIRECTORY: /home/vagrant/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/vagrant/.rbenv/versions/2.4.4/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/vagrant/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0
     - /home/vagrant/.gem/ruby/2.4.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/vagrant/.rbenv/versions/2.4.4/bin
     - /home/vagrant/.rbenv/libexec
     - /home/vagrant/.rbenv/plugins/r/bin
     - /home/vagrant/.rbenv/shims
     - /home/vagrant/.rbenv/bin
     - /usr/local/bin
     - /usr/bin
     - /usr/local/sbin
     - /usr/sbin
     - /home/vagrant/.local/bin
     - /home/vagrant/bin

>takahashimさん

[vagrant@localhost ~]$ mkdir -p app/samurai/sample1
[vagrant@localhost ~]$ cd app/samurai/sample1/
[vagrant@localhost sample1]$ bundle init
Gemfile already exists at /home/vagrant/app/samurai/sample1/Gemfile

[vagrant@localhost sample1]$ sed -i 's/ gem "rails"/gem "rails", "~> 5.1.0"/g' Gemfile
[vagrant@localhost sample1]$ bundle install --path vendor/bundler

[!] There was an error parsing `Gemfile`: You cannot specify the same gem twice with different version requirements.
You specified: rails (~> 5.1.6) and rails (~> 5.1.4therubyracer). Bundler cannot continue.

# from /home/vagrant/app/samurai/sample1/Gemfile:20
# -------------------------------------------
# # See https://github.com/rails/execjs#readme for more supported runtimes
> gem "rails", "~> 5.1.4"'therubyracer', platforms: :ruby
#
# -------------------------------------------


>dyoshikawaさん
何から何まで無知で申し訳ないです。お手数かけます。
これのことでしょうか?

[vagrant@localhost sample1]$ cat Gemfile
source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.6'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
gem "rails", "~> 5.1.4"'therubyracer', platforms: :ruby

# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
gem "rails", "~> 5.1.4"'redis', '~> 4.0'
# Use ActiveModel has_secure_password
gem "rails", "~> 5.1.4"'bcrypt', '~> 3.1.7'

# Use Capistrano for deployment
gem "rails", "~> 5.1.4"'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '~> 2.13'
  gem 'selenium-webdriver'
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

お二方へ。
数日にわたって回答いただきありがとうございました。
お二方の御指示通り、色々試行錯誤してみましたが、何時間もエラーの連発でちょっと疲弊しきっています。
自分には環境構築はまだ早かったということで、クラウドIDEを使ってみようかと思います。
色々調べているうちに、エラーとはちゃんと向き合うべきだという声もたくさんありましたが、環境構築の段階で何日も何時間もかかっているため、このままではプログラミングの学習自体、挫折してしまいそうなので、今回は折れようかと思います。
ありがとうございました。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • dyoshikawa

    2018/08/06 19:27

    gemfileはどうなっていますか?

    キャンセル

  • stynjoe

    2018/08/07 16:36

    ごめんなさい、初心者過ぎて質問の意味が理解できないです、、申し訳ないです。gemfileの作成は上手くいってるかということでしょうか。一応Gemfile already existsとあるので、存在はしていると思います。

    キャンセル

  • dyoshikawa

    2018/08/07 16:39

    ああすみません、現状のGemfileの中身を質問文に追記してほしいということです。このコメント欄ではなく(見づらいので)、質問本文に追記お願いしたいです。

    キャンセル

  • dyoshikawa

    2018/08/07 19:04

    Gemfileの内容(ソースコード)を記載してほしいのですが・・・Gemfileを右クリックしてテキストエディタ(Windowsならメモ帳など)で開くか、 cat Gemfile コマンドでソースを表示できます。

    キャンセル

回答 2

checkベストアンサー

0

このsedスクリプトは微妙ですね…。「コメントを外す」というのは、ふつうは、

# gem "rails"

というのを、

gem "rails"

にすることで、

gem "rails", "~> 5.1.0"

みたいにはしません(コメント外してるだけじゃないじゃん…。あと2回実行すると壊れるし、そもそもgオプションも不要だし)。

それと、5.1.6が出てきた理由ですが、おそらく何回かbundle installを行なっていませんか?
この手順だと、最初にbundle initで生成されたGemfileをbundle exec rails new .で上書きするような形になっているようです。で、後者で生成されたGemfileにgem 'rails', '~> 5.1.6'が入ってきてるんではないでしょうか。

あんまりこのやり方は良いようには思えない(Gemfileを上書きするくらいだったらRailsをグローバルにインストールしてしまった方がいいと思う…)のですが、この手順でやるんであれば、sample1ディレクトリをrm -rf sample1とかでいったん削除し、mkdir sample1 && cd sample1でもう一度作り直してから、bundle initからやり直した方がいいと思います。

なお、bundle exec rails new .を実行すると、

Overwrite /xxxx/app/samurai/sample1/Gemfile? (enter "h" for help) [Ynaqdh]

のように質問してくると思いますが、ここではYを選択してください(そのままenterでも良いです)。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/07 16:31

    とりあえず削除し、もう一度試してみましたが、以下のようになりました。
    [vagrant@localhost ~]$ mkdir -p app/samurai/sample1
    [vagrant@localhost ~]$ cd app/samurai/sample1/
    [vagrant@localhost sample1]$ bundle init
    Gemfile already exists at /home/vagrant/app/samurai/sample1/Gemfile

    [vagrant@localhost sample1]$ sed -i 's/ gem "rails"/gem "rails", "~> 5.1.0"/g' G
    emfile
    [vagrant@localhost sample1]$ bundle install --path vendor/bundler

    [!] There was an error parsing `Gemfile`: You cannot specify the same gem twice with different version requirements.
    You specified: rails (~> 5.1.6) and rails (~> 5.1.4therubyracer). Bundler cannot continue.

    # from /home/vagrant/app/samurai/sample1/Gemfile:20
    # -------------------------------------------
    # # See https://github.com/rails/execjs#readme for more supported runtimes
    > gem "rails", "~> 5.1.4"'therubyracer', platforms: :ruby
    #
    # -------------------------------------------
    一度削除したにもかかわらず、bundle initするともう既に存在しますと出ました。
    なので作業を続けるとやはり、また同じようなエラーが出ます。
    どうしたら良いでしょう?

    キャンセル

  • 2018/08/07 17:08

    こちらも本文に記載しておきます。

    キャンセル

  • 2018/08/07 19:30

    > 一度削除したにもかかわらず、bundle initするともう既に存在しますと出ました。

    というのはちょっとおかしいですね…。権限かなにかの都合でちゃんと消えてなかったか、消すディレクトリを間違えた可能性があります。

    もう一度mkdir と cdをやって、bundle initを実行する前にlsをして空であることを確認するのがよいかも。それでも空になってなかったら、sample2とかの別のディレクトリを作って試す方が良さそうです。

    キャンセル

0

質問者さんはプログラミング自体未経験者と見受けますので、おそらく貼られている参考記事のような環境構築作業は難しいです。

Virtualbox, Vagrantまで導入できているのであれば rails-dev-box を使うべきです。

https://github.com/rails/rails-dev-box

Rails公式のVagrantイメージであり、設定なしで簡単にRailsを始められるはずです。
導入方法はrails-dev-boxのGitHubページ(↑のリンク)のReadme.mdを読むか、次のような記事を参考にすると良いでしょう。

https://qiita.com/sayama0402/items/99bbf6d0977c5c6414cb

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.64%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る