红宝石中的空格有不同的敏感度/设置吗?
我有一个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
1.9.3在我的Mac上运行正常,但在运行的ubuntu服务器上,它抱怨.joins在一个单独的行上(意外。期待kEND)
是什么给了什么?答案 0 :(得分:8)
这个语法在Ruby 1.9.1中是introduced:
语言核心更改
- 新语法和语义
- ...
- 在三元冒号运算符(:)和方法调用点运算符(。)
之前允许使用换行符
很可能您的服务器运行的是较旧的Ruby版本,即1.9.0或1.8.x。
答案 1 :(得分:5)
将句点移至上一行。如果逐行解析,
foo = bar
看起来像一个完整的语句,下一行是单独的,是语法错误:
.baz
然而,这不能是一个声明:
foo = bar.
并且解析器知道它还必须附加下一行:
baz
(它提供与foo = bar.baz
相同的解析,如预期的那样)。
答案 2 :(得分:1)
也许
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
答案 3 :(得分:0)
您还可以尝试以下各种组合,其中(
结束行,或)
开始行。在这里我展示了两者,你可以根据自己的喜好进行调整。
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
答案 4 :(得分:0)
将dottes放在行尾
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