ruby whitespace

هل هناك حساسيات/إعدادات مختلفة للبيض في روبي؟

لدي مشروع 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)

ما يعطي؟

1
حاول كل من 1.8 و 1.9.3
وأضاف المؤلف kolosy, مصدر

5 إجابة

كان هذا النحو قدم في ruby 1.9.1:

Language core changes

  • New syntax and semantics
    • Newlines allowed before ternary colon operator (:) and method call dot operator (.)

على الأرجح أن خادمك يشغل إصدارًا أقدم من روبي ، بمعنى 1.9.0 أو 1.8.x.

8
وأضاف

نقل الفترة إلى السطر السابق. إذا كان تحليل الخط عن طريق سطر ،

foo = bar

يبدو وكأنه عبارة كاملة ، والخط التالي ، الذي يتم تناوله بشكل منفصل ، هو خطأ في بناء الجملة:

.baz

ومع ذلك ، لا يمكن أن يكون هذا بيانًا:

foo = bar.

ويعرف المحلل أنه يجب عليه إضافة السطر التالي أيضًا:

baz

(والتي تعطي نفس التحليل مثل foo = bar.baz ، كما هو متوقع).

5
وأضاف
muistooshort: نعم ، في الواقع. غطت بالفعل ، وجيد جدا ، من قبل ستيفان. أنا أعطيت upvote وكل شيء.
وأضاف المؤلف Amadan, مصدر

يمكن

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
وأضاف

ضع dotes على نهاية الخطوط

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
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
0
وأضاف