首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迁移到Rails 5,rails宝石发行

迁移到Rails 5,rails宝石发行
EN

Stack Overflow用户
提问于 2018-10-25 08:17:48
回答 2查看 922关注 0票数 2

我正在尝试从Rails 4.2迁移到Rails 5.0 (运行在ruby2.3上)(参见这里的计划https://stackoverflow.com/a/38443616/7374136)

计划是:

  1. 更新rails gem和所有依赖项。
  2. 运行测试(几乎涵盖了我们的整个代码库)以进行折旧并修复它们。
  3. 运行rake rails:update更新Rails
  4. 调整配置,应用程序类,破坏更改,.

尽管如此,我已经在第一步就被阻止了,更新rails gem和依赖项。gem 'rails', '4.2.5' -> gem 'rails', '~> 5.0' running:bundle update rails

我面临多个依赖关系问题,我通过查找最终要求rails小于5的依赖项来解决这些问题,并查看这些依赖项是否可以更新。跑步:

代码语言:javascript
复制
bundle update rails tolk rspec-rails globalize active_model_serializers simple_form postmark-rails > rails_update_report.txt

我最后得到一个Gemfile,如下所示:

代码语言:javascript
复制
source 'https://rubygems.org'

# ruby '2.3.2'
gem 'bundler', '>= 1.11.2'

#core
gem 'rails', '~> 5.0'
gem 'pg'
gem 'puma'

#rest-client
gem 'httparty'

#rails-extension
gem 'rails-i18n', '~> 4.0', '>= 4.0.8'
gem 'active_model_serializers', '~> 0.10.7'
gem 'devise', '~> 3.5.6'
gem 'devise-i18n'
gem 'devise-i18n-views'
gem 'draper', '~> 2.1.0'
gem 'interactor', '~> 3.1'
gem 'rack-cors', :require => 'rack/cors'
gem 'globalize', '~> 5.1'
gem 'globalize-accessors', '~> 0.2.1'
gem 'kaminari'
gem 'tolk', '~> 3.1'
gem 'reform', '~> 2.1.0'
gem 'reform-rails', '~> 0.1.0'
gem 'virtus', '~> 1.0.5'
gem 'validates_timeliness', '~> 4.0'
gem 'pundit', '~> 1.1.0'
gem 'time_difference'
gem 'phonelib', '~> 0.5.6'
gem 'jwt', '~> 1.5'
gem 'pdf-forms', github: 'jkraemer/pdf-forms', branch: "1.0.0"
gem 'combine_pdf', '~> 0.2.21'
gem 'pdf-reader'

#markdown
gem 'redcarpet'

#files upload and images handling
gem 'carrierwave', '~> 0.11.2'
gem 'fog-aws'
gem 'file_validators'
gem 'mini_magick'
gem 'remotipart'
gem 'carrierwave-imageoptimizer'
gem 'fastimage'

#front
gem 'sass-rails', '~> 5.0'
gem 'uglifier'
gem 'coffee-rails', '~> 4.1.1'
gem 'jquery-rails'
gem 'jquery-cookie-rails'
gem 'foundation-rails'
gem 'slim-rails'
gem 'simple_form', '~> 4.0', '>= 4.0.1'
gem 'cocoon', '~> 1.2.8'
gem 'font-awesome-rails', '~> 4.5'
gem 'jquery-slick-rails'
# gem 'dropzonejs-rails'

# misc
gem 'sentry-raven'
gem 'postmark-rails', '~> 0.18.0'
gem 'chargebee'
gem 'split', require: 'split/dashboard'

# Note that backup is actually a stand alone app packaged as a ruby gem!
gem 'backup',   require: false
gem 'whenever', require: false

#Delayed Jobs
gem 'sidekiq'
gem 'sidekiq-client-cli'

group :development, :test do
  gem 'quiet_assets'
  gem 'rspec-rails', '~> 3.8', '>= 3.8.1'
  gem 'factory_girl_rails', require: false
  gem 'faker'

  gem 'pry-rails'
  gem 'pry-rescue'

  gem 'bullet'
  gem 'active_record_query_trace'
end

group :development do
  gem 'better_errors'
  gem 'spring'
  gem 'spring-commands-rspec'
  gem 'binding_of_caller'
  gem 'foreman'
  gem 'i18n_yaml_sorter'

  gem 'capistrano', '~> 3.4', require: false
  gem 'capistrano-rails', require: false
  gem 'capistrano-bundler', require: false
  gem 'capistrano-rbenv', require: false
  gem 'capistrano-db-tasks', require: false
  gem 'capistrano-maintenance', '~> 1.0', require: false
  gem 'airbrussh', require: false
  gem 'highline', require: false
  gem 'capistrano-faster-assets', require: false
  gem 'capistrano-sidekiq', github: 'seuros/capistrano-sidekiq'
end

group :test do
  gem 'capybara', require: false
  gem 'database_cleaner', require: false
  gem 'launchy', require: false
  gem 'site_prism', require: false
  gem 'memoist'

  gem 'rspec-collection_matchers', require: false
  gem 'poltergeist', require: false
  gem 'selenium-webdriver', require: false
  gem 'capybara-screenshot', require: false
  gem 'webmock', require: false
  gem 'email_spec', require: false

  gem 'rspec-sidekiq'
end

我得到了以下错误:

代码语言:javascript
复制
Could not find gem 'rails (~> 5.0)', which is required by gem 'dropzonejs-rails', in any of the sources.

完整的报告是:

代码语言:javascript
复制
Fetching gem metadata from https://rubygems.org/.......
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies..............
Bundler could not find compatible versions for gem "actionmailer":
  In Gemfile:
    postmark-rails (~> 0.18.0) was resolved to 0.18.0, which depends on
      actionmailer (>= 3.0.0)

    rails (~> 5.0) was resolved to 5.0.0, which depends on
      actionmailer (= 5.0.0)

Bundler could not find compatible versions for gem "actionpack":
  In Gemfile:
    active_model_serializers (~> 0.10.7) was resolved to 0.10.7, which depends on
      actionpack (< 6, >= 4.1)

    draper (~> 2.1.0) was resolved to 2.1.0, which depends on
      actionpack (>= 3.0)

    kaminari was resolved to 0.16.3, which depends on
      actionpack (>= 3.0.0)

    rails (~> 5.0) was resolved to 5.0.0, which depends on
      actionpack (= 5.0.0)

    simple_form (>= 4.0.1, ~> 4.0) was resolved to 4.0.1, which depends on
      actionpack (>= 5.0)

    slim-rails was resolved to 3.1.1, which depends on
      actionpack (>= 3.1)

Bundler could not find compatible versions for gem "activerecord":
  In Gemfile:
    globalize (~> 5.1) was resolved to 5.1.0, which depends on
      activerecord (< 5.2, >= 4.2)

    rails (~> 5.0) was resolved to 5.0.0, which depends on
      activerecord (= 5.0.0)

Bundler could not find compatible versions for gem "rails":
  In Gemfile:
    rails (~> 5.0)

    dropzonejs-rails was resolved to 0.8.2, which depends on
      rails (> 3.1)

Could not find gem 'rails (~> 5.0)', which is required by gem 'dropzonejs-rails', in any of the sources.

Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    rails (~> 5.0) was resolved to 5.0.0, which depends on
      railties (= 5.0.0)

    rails-i18n (>= 4.0.8, ~> 4.0) was resolved to 4.0.9, which depends on
      railties (~> 4.0)

我正面临着一个我无法解决的问题。有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-25 12:49:42

听起来你已经控制了“寻找阻塞依赖,然后修复它”的循环。

目前需要注意的问题在最底层:

代码语言:javascript
复制
rails-i18n (>= 4.0.8, ~> 4.0) was resolved to 4.0.9, which depends on
  railties (~> 4.0)
票数 2
EN

Stack Overflow用户

发布于 2020-10-27 16:20:10

海事组织最好将版本号和范围保持在Gemfile之外,只在Gemfile.lock中。这样,你只需找一个地方解决这些问题。因此,当您添加一个gem时,继续将它与其版本规范放在Gemfile中,执行bundle install并安装它,然后从Gemfile中删除版本规范,并将其留在Gemfile.lock中,在Gemfile.lock中,邦德勒将自动将其放入其中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52984519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档