【问题标题】:What to do When Unicorn Type Error Happened in Ruby 2.4Ruby 2.4 中出现 Unicorn 类型错误时该怎么办
【发布时间】:2019-03-05 06:34:17
【问题描述】:

我将 ruby​​ 从 2.1 升级到 2.4(ruby24, ruby​​24-devel), bundler(version: 1.17.3), nokogiri(version: 1.6.8), rails(version: 4.0.1), unicorn(version: 5.0 .1),therubyracer(版本:0.12.3)。 有如下故障:

> INFO -- : Refreshing Gem list
> /usr/local/share/ruby/gems/2.4/gems/activesupport-4.0.1/lib/active_support/values/time_zone.rb:282:
> warning: circular argument reference - now
> /usr/local/share/ruby/gems/2.4/gems/rbhive-0.5.1/lib/rbhive/t_c_l_i_schema_definition.rb:10:
> warning: key :bigint is duplicated and overwritten on line 14
> /usr/local/share/ruby/gems/2.4/gems/activesupport-4.0.1/lib/active_support/core_ext/numeric/time.rb:50:in
> `*': ActiveSupport::Duration can't be coerced into Integer (TypeError)
>         from /usr/local/share/ruby/gems/2.4/gems/activesupport-4.0.1/lib/active_support/core_ext/numeric/time.rb:50:in
> `days'
>         from /usr/local/share/ruby/gems/2.4/gems/activesupport-4.0.1/lib/active_support/core_ext/numeric/time.rb:55:in
> `weeks'
>         from /usr/local/share/ruby/gems/2.4/gems/devise-3.2.2/lib/devise.rb:131:in
> `<module:Devise>'
>         from /usr/local/share/ruby/gems/2.4/gems/devise-3.2.2/lib/devise.rb:8:in
> `<top (required)>'
>         from /usr/local/share/ruby/gems/2.4/gems/bundler-1.17.3/lib/bundler/runtime.rb:81:in
> `require'
>         from /usr/local/share/ruby/gems/2.4/gems/bundler-1.17.3/lib/bundler/runtime.rb:81:in
> `block (2 levels) in require'
>         from /usr/local/share/ruby/gems/2.4/gems/bundler-1.17.3/lib/bundler/runtime.rb:76:in
> `each'

不知道有没有人知道该怎么做

【问题讨论】:

    标签: ruby unicorn ruby-2.4


    【解决方案1】:

    这来自rails 使用的activesupport gem。所以您的railsruby 版本之间存在版本兼容性问题。如果您想升级您的ruby,有时您应该相应地升级您的rails 版本。所以有两种方法可以解决这个问题。逐步降级 ruby​​ 版本或升级 rails 版本。

    【讨论】:

    • 我的 ruby​​ 版本目前是 2.4.5,rails 是 4.0.1。我应该将我的 rails 升级到 4.2.11 吗??
    • @yfqin 是的,你应该这样做。但是使用 gems 和您的代码会有一些复杂性。如果您没有测试覆盖率,那么进行如此重大的升级会导致问题。我的意思是逐步升级,例如4.0.14.0.24.0.3等等,直到问题解决。
    • rails version=4.0.x 或 4.1.x 时好像不行。我将 rails 升级到 4.2.11 和其他依赖项,但出现另一个错误:Bundler Error Backtrace: from /usr/local/share/ruby/gems/2.4/gems/bundler-1.17.3/lib/bundler/runtime.rb: 80:in `block (2 levels) in require'
    猜你喜欢
    • 1970-01-01
    • 2012-09-06
    • 2021-04-27
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多