1

我刚刚将我的 Rails 应用程序从 v5.2.3 升级到 v6.0.0.beta3。我正在使用 Daterangepicker v3.0.3 gem,它似乎与 Rails 6.x 不兼容。我的应用程序依赖于 gem,如果可能的话,我真的很想坚持使用它(如何?),如果没有,那么什么 gem 可以替代它?

我将 Rails gem 版本更改为 edge 并运行bundle update。它输出以下内容:

Bundler could not find compatible versions for gem "actionpack":
  In Gemfile:
    jquery-datatables-rails (~> 3.4) was resolved to 3.4.0, which depends on
      actionpack (>= 3.1)

    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      actionpack (= 6.0.0.beta3)

Bundler could not find compatible versions for gem "activemodel":
  In Gemfile:
    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      activemodel (= 6.0.0.beta3)

    web-console (>= 3.3.0) was resolved to 3.7.0, which depends on
      activemodel (>= 5.0)

Bundler could not find compatible versions for gem "activerecord":
  In Gemfile:
    friendly_id (~> 5.2.4) was resolved to 5.2.5, which depends on
      activerecord (>= 4.0.0)

    pg_search (~> 2.1, >= 2.1.5) was resolved to 2.1.5, which depends on
      activerecord (>= 4.2)

    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      activerecord (= 6.0.0.beta3)

Bundler could not find compatible versions for gem "activesupport":
  In Gemfile:
    jbuilder (~> 2.5) was resolved to 2.8.0, which depends on
      activesupport (>= 4.2.0)

    pundit was resolved to 2.0.1, which depends on
      activesupport (>= 3.0.0)

    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      activesupport (= 6.0.0.beta3)

Bundler could not find compatible versions for gem "countries":
  In Gemfile:
    countries

    country_select (~> 3.1) was resolved to 3.1.1, which depends on
      countries (~> 2.0)

Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    bootstrap-daterangepicker-rails (~> 3.0, >= 3.0.3) was resolved to 3.0.3, which depends on
      railties (>= 4.0, < 5.3)

    coffee-rails (~> 4.2) was resolved to 4.2.2, which depends on
      railties (>= 4.0.0)

    devise (~> 4.5) was resolved to 4.6.2, which depends on
      railties (>= 4.1.0, < 6.0)

    jquery-rails (~> 4.3, >= 4.3.3) was resolved to 4.3.3, which depends on
      railties (>= 4.2.0)

    momentjs-rails (~> 2.17, >= 2.17.1) was resolved to 2.20.1, which depends on
      railties (>= 3.1)

    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      railties (= 6.0.0.beta3)

    sass-rails (~> 5.0) was resolved to 5.0.7, which depends on
      railties (>= 4.0.0, < 6)

    web-console (>= 3.3.0) was resolved to 3.7.0, which depends on
      railties (>= 5.0)

我注释掉了我的 Daterangepicker gem,并且包更新完美无缺。我看到宝石取决于railties < 5.3, >= 4.0。Rails v6 使用 railties > v4,这可能是它抛出错误的原因。我能做些什么呢?

先感谢您。

4

3 回答 3

1

值得注意的是,sass-railsrailties版本也已锁定< 6

如果这种情况发生了变化,我会感到惊讶,因为 Rails 世界中的大多数东西都转向webpacker来处理所有前端(曾经存在于资产管道中的所有东西)。值得一看react-rails 之类的东西,它可以让你使用react-bootstrap-daterangepicker

要么,要么你总是可以 PR/fork Daterangepicker gem。虽然,基于提交和长期 PR 的(内)频率,我认为你可能会更幸运地走 webpacker 路线。

于 2019-04-17T22:39:45.940 回答
0

我不建议您使用带有 javascript 依赖项的 gem,因为 Rails 正在移动(就像在 Rails 6 上所做的那样)使用 Webpack 作为 CSS 和 Javascript 的预处理器。除了使用 Vue.js、Angular 和 React 等框架之外,在 Rails 上处理 Javascript/Jquery 依赖项的更好解决方案是使用 Webpack 全局加载 Jquery。这样,您可以在您的应用程序中使用 bootstrap 和 bootstrap-datepicker,因为它们都以 yarn/npm 包的形式存在。您还可以让 Jquery 函数与您的应用程序一起使用。

这是关于使用 Webpack 全局设置 Jquery 的 SO 链接

于 2019-11-06T22:58:55.410 回答
0

我知道这不是最好的解决方案,但我是这样解决的:

Gemfile

gem 'bootstrap-daterangepicker-rails', git: 'https://github.com/jordanbrock/bootstrap-daterangepicker-rails.git', branch: 'master'

如果你害怕指向master,你也可以像这样指向最新的commit:

gem 'bootstrap-daterangepicker-rails', git: 'https://github.com/jordanbrock/bootstrap-daterangepicker-rails.git', ref: '6cade9deedfca1e6e55ce68b7c828f001e13f995'
于 2019-08-22T20:10:38.940 回答