红宝石空白

kol*_*osy 1 ruby ruby-on-rails-3

红宝石中的空白有不同的敏感度/设置吗?

我有一个RoR项目,活动记录调用有很多组件:

    max_stuff = FooSummary.select("max(stuff) as stuff")
                        .joins(:foo => :bar)
                        .where("user_id = ? and record_date < ?", r.user_id, r.record_date)
                        .group("user_id")
                        .first
Run Code Online (Sandbox Code Playgroud)

1.9.3在我的Mac上运行正常,但在运行的ubuntu服务器上,它抱怨.joins在一个单独的行上(意外.期待kEND)这一事实

是什么赋予了?

Ste*_*fan 8

这个语法是在Ruby 1.9.1 中引入的:

语言核心变化

  • 新的语法和语义
    • ...
    • 在三元冒号运算符(:)和方法调用点运算符(.)之前允许换行符

很可能您的服务器运行的是较旧的Ruby版本,即1.9.0或1.8.x.


Ama*_*dan 5

将句点移动到上一行.如果逐行解析,

foo = bar
Run Code Online (Sandbox Code Playgroud)

看起来像一个完整的语句,下一行,单独采用,是一个语法错误:

.baz
Run Code Online (Sandbox Code Playgroud)

但是,这不能是一个声明:

foo = bar.
Run Code Online (Sandbox Code Playgroud)

并且解析器知道它还必须附加下一行:

baz
Run Code Online (Sandbox Code Playgroud)

(它提供与foo = bar.baz预期相同的解析).