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

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

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

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

6687閲覧

Ruby on Rails5へアップデートができない

ethno

総合スコア8

Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/11/28 12:46

##経緯
Ruby on Rails 4.2.1から5へバージョンを上げるため、

$ bundle update $ bundle update rails

を試みたところ、エラーが発生。
gemfileに問題のgemの最新バージョンを書き込むが、
これ以上対策が思いつかず、、
どなたか解決方法をご教示いただきたいです。

環境

Ruby 2.4.1
Ruby on Rails 4.2.1

##エラー内容

ruby

1 2Bundler could not find compatible versions for gem "activemodel": 3 In Gemfile: 4 carrierwave (= 1.2.1) was resolved to 1.2.1, which depends on 5 activemodel (>= 4.0.0) 6 7 rails (= 5.0.1) was resolved to 5.0.1, which depends on 8 activemodel (= 5.0.1) 9 10Bundler could not find compatible versions for gem "json": 11 In Gemfile: 12 json (= 2.1.0) 13 14 sdoc (= 0.4.2) was resolved to 0.4.2, which depends on 15 json (>= 1.7.7, ~> 1.7) 16 17Bundler could not find compatible versions for gem "railties": 18 In Gemfile: 19 devise (= 4.3.0) was resolved to 4.3.0, which depends on 20 railties (< 5.2, >= 4.1.0) 21 22 jquery-rails (= 4.3.1) was resolved to 4.3.1, which depends on 23 railties (>= 4.2.0) 24 25 rails (= 5.0.1) was resolved to 5.0.1, which depends on 26 railties (= 5.0.1) 27 28 sass-rails (= 5.0.7) was resolved to 5.0.7, which depends on 29 railties (< 6, >= 4.0.0)

gemfile内の記述

ruby

1source 'https://rubygems.org' 2 3gem 'rails', '5.0.1' 4gem 'sass-rails', '5.0.7' 5gem 'uglifier', '3.2.0' 6gem 'coffee-rails', '4.2.2' 7gem 'jquery-rails', '4.3.1' 8gem 'turbolinks', '5.0.1' 9gem 'jbuilder', '2.7.0' 10gem 'sdoc', '0.4.2', group: :doc 11gem 'omniauth' 12gem 'omniauth-twitter','1.4.0' 13gem 'settingslogic' 14gem 'sprockets-rails', '3.2.1' 15gem 'activemodel', '5.0.1' 16gem 'activerecord', '5.0.1' 17gem 'activesupport', '5.0.1' 18gem 'actionpack' , '5.0.1' 19gem 'actionview' , '5.0.1' 20gem 'railties' , '5.0.1' 21gem 'devise', '4.3.0' 22gem 'seed-fu', '2.3.6' 23gem 'json', "2.1.0" 24gem 'rails-dom-testing', "2.0.3" 25 26gem 'bootstrap-sass' 27gem 'kaminari' 28gem 'google-analytics-rails' 29 30 31gem 'ckeditor' 32gem 'carrierwave' , '1.2.1' 33gem 'mini_magick' 34 35gem "redcarpet", "~> 2.3.0" 36 37group :development, :test do 38 gem 'sqlite3', '1.3.9' 39 gem 'byebug', '3.4.0' 40 gem 'web-console', '3.5.1' 41 gem 'spring', '1.1.3' 42end 43 44group :production do 45 gem 'pg', '0.17.1' 46 gem 'rails_12factor', '0.0.2' 47end 48

また、gem listを見た際に、重複しているバージョンがあったのですが、
gem cleanupしても修復せず、、

ruby

1$ gem list 2 3*** LOCAL GEMS *** 4 5actioncable (5.1.4) 6actionmailer (5.1.4) 7actionpack (5.1.4, 5.0.0) 8actionview (5.1.4, 5.0.0) 9activejob (5.1.4) 10activemodel (5.1.4, 5.0.0) 11activerecord (5.1.4) 12activesupport (5.1.4, 5.0.0) 13...

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

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

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

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

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

guest

回答1

0

Gemfile にバージョンをガチガチに固定して書いてしまっているので,互換性のある組み合わせになっていない,ということかなと思います。

エラーメッセージにも書いてありますが,sdoc 0.4.2 は json (>= 1.7.7, ~> 1.7) に依存しています。
>= 1.7.7 は 1.7.7 以上ということですが,~> 1.7 は 1.7 以上 2.0 未満ということです。
ところが json のバージョンを 2.1.0 に固定してしまっているので両立しないわけです。

Gemfile から余計な記述を無くしていく必要があります。

json は,sdoc が依存しているという以上の使われ方をしないのであれば,Gemfile に書く必要がありません。(ほかでも使っていて,そちらでバージョンに制約があるなら書く必要がありますが)

それから rails は activemodel, activerecord, activesupport, actionpack, actionview, railties などに依存していますので,Gemfile には rails だけ書いておけば,これらは書く必要がありません。

このとき,rails のバージョンも

rb

1gem 'rails', '5.0.1'

みたいに完全に固定しないで,

rb

1gem 'rails', '~> 5.0.1'

とするといいと思います。これは 5.0.1 以上 5.2.0 未満ということで,バグフィクスなどで 5.0.2 とかが出た場合に Gemfile を修正せずにすみます。
ちなみに 5.0 系の最新版は 5.0.6 です。
rails の最新版は 5.1.4 です。

ためしに

rails new hogehoge

して空の rails プロジェクトを作って,Gemfile を比較してみてはいかがでしょう。
何が余計な記述か,バージョンはどう書くのが良いかがわかると思います。

このとき,インストールされている最新の rails のバージョンでやる場合は上記でいいですが,もし何か事情があって,古い rails でやりたいときは,

rails _5.0.1_ new hogehoge

のようにバージョンを指定することができます。(当該バージョンの rails は事前にインストールしておきます)

投稿2017/11/28 14:41

scivola

総合スコア2108

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問