【问题标题】:Trying to do a bundle fails with "There was a SyntaxError while loading arel.gemspec"尝试打包失败并显示“加载 arel.gemspec 时出现语法错误”
【发布时间】:2016-02-18 17:02:08
【问题描述】:

这是我在 master 分支的 rails repo 中执行 bundle 时遇到的错误。

There was a SyntaxError while loading arel.gemspec: 
/home/apnabhzu/ruby/gems/bundler/gems/arel-3c429c5d86e9/lib/arel/table.rb:14: syntax
error, unexpected tLABEL
    def initialize(name, as: nil, type_caster: nil)
                            ^
/home/apnabhzu/ruby/gems/bundler/gems/arel-3c429c5d86e9/lib/arel/table.rb:14: Can't
assign to nil
    def initialize(name, as: nil, type_caster: nil)
                                 ^
/home/apnabhzu/ruby/gems/bundler/gems/arel-3c429c5d86e9/lib/arel/table.rb:125: syntax
error, unexpected keyword_end, expecting $end from
  /home/apnabhzu/ruby/gems/bundler/gems/arel-3c429c5d86e9/arel.gemspec:3:in `<main>'

我在下面列出了环境详细信息:

  • Ruby 版本 - 1.9.3p429
  • Rails 版本 - 5.0.0.alpha
  • 捆绑器版本 1.10.6

我不知道为什么会这样,有什么可能的解决方法?

【问题讨论】:

  • 可能是命名参数只出现在 ruby​​ 2 中。这个版本的 arel 不适用于 ruby​​ 1.9
  • @charlysisto 这可能是问题所在,谢谢

标签: ruby-on-rails ruby bundler arel gemspecs


【解决方案1】:

您为什么要尝试将 nil 值分配给参数?

不提供参数时使用默认参数。

如果你提供它为 nil,那么它将是 nil。

如果你想设置一个默认值,即使传递了 nil,并且仍然允许在没有参数的情况下调用方法,你需要将默认值设置为 nil 并使用“或等于”运算符:

def initialize(name,as=nil)
 as ||= "Your value"
 puts as
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2013-11-15
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    相关资源
    最近更新 更多