質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.35%

  • Ruby

    5196questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    5076questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Ruby on Rails 5

    91questions

  • IntelliJ IDEA

    85questions

    IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

  • RubyMine

    31questions

    RubyMineは、Ruby/Ruby on RailsベースのWebアプリケーション開発を行うためのIDEです。コードエディタやコードアシスタンス、グラフィカルなデバッガを搭載しており、様々なバージョン管理システムに対応しています。

RubyMineで謎のシンタックスエラー

解決済

回答 2

投稿 2017/12/01 14:19

  • 評価
  • クリップ 0
  • VIEW 63

nameko_moto

score 196

RubyMine 2017.2.4
Ruby 2.4.1
Ruby on Rails 5.1
を使用しています。

プログラミング初心者です。

routeファイルにて、

concern :hogeable do
    resources :foos
end
namespace :bar { concerns :hogeable }

のような書き方をしているのですが、
:barのすぐ右の{に赤線がつき、 Unexpected: { と言われてしまいます。

namespace :bar do
    concerns :hogeable
end


の書き方にすると治ってくれます。
当然構文は正しいので rails routes でも正常に表示され、アプリケーションも問題なく動くのですが、ツリーとかでも赤線が表示されるのでうっとおしいです。
ここのシンタックスエラーだけ消す方法とか、このエラーを直す方法をご存知の方がいれば教えていただきたいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

残念ながら、namespace :bar { concerns :hogeable }は本当にシンタックスエラーです。

中括弧を使うなら、namespace(:bar) { concerns :hogeable }のように書く必要があります。中括弧は直前にかかるのに対して、do-endは直前にかからないので、カッコの必要性が違ってきます。

投稿 2017/12/01 14:26

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/01 16:12

    そうだったんですね・・・ブロックとかその辺り深く理解できていなかったのでこの機会に勉強します!

    キャンセル

+2

maisumakunさんのお書きのように、上記はシンタックスエラーですが、
実行するとエラーにならないと言う事なので、試してみました。Ruby2.3まではエラーですが、2.4.0と2.4.1でエラーにならないですね。2.4.2でまたエラーになるように戻りました。
2.4.0で入ったバグのようです。2.4.2のChangeLogのこれですかね。

------------------------------------------------------------------------
r59409 | nagachika | 2017-07-23 17:59:07 +0900 (Sun, 23 Jul 2017) | 9 lines

merge revision(s) 58641: [Backport #13547]

    parse.y: brace after literal arg

    * parse.y (symbol, dsym, parser_set_number_literal, parser_yylex):
      set state to END too not only ENDARG and after a literal, so
      that a left brace after it should be a primary block bound to
      the literal, which causes syntax error.
      [ruby-core:81037] [Bug #13547]
------------------------------------------------------------------------

補足:
foo bar { baz }は、メソッドbarをブロック付きで呼び出して、その返値を引数としてメソッドfooを呼び出すという意味になります。

投稿 2017/12/01 15:09

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/01 16:12

    ありがとうございます!
    rubyのバグだったんですね、、

    キャンセル

  • 2017/12/03 00:23

    2.4.0か2.4.1をお使いだと思うので、可能ならば2.4.2に上げた方が良いかと思います。それでちゃんとシンタックスエラーになりますので。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.35%

関連した質問

  • 解決済

    Rails テスト rspec

    Ruby on Rails のテストについてですが 生成されたtopページのhtmlの中身の文字列を何かと比較するテストを作成したいのですがどのように書いていけば良いかわかり

  • 解決済

    【rails】hidden_fieldのparamsが使えない

    前提・実現したいこと ひとつのnew.html.erbで三種類のテーブルに保存できるようそれぞれのform_forを設定しています。 3つのform_forは独立して動かし

  • 解決済

    rubymineでApplicationControllerとかrailsのコードでエラーが

    ↓みたいにApplicationControllerなどのrailsのコードにエラーがでています。 対処法が分かるかたお願いします! Controllerを自動生成しただけなので、

  • 解決済

    createでカラムに値が入らない

    operator_index.htmlで:cosmo_idと:operatorに値を入れ、一覧表示もしたいのですが、 以下のエラーが出てしまいます。 ActionCont

  • 解決済

    このRubyのコードはどうやって実現しているのでしょうか

    Railsのユーザー登録周りで定番のgem devise の実装について。 class User < ApplicationRecord devise :database_

  • 受付中

    RubyMineについて

    ruby mine を使っているのですがデバックをしようとすると[No Rrails found in SDK]となってrails s することができません。対処法を教えて下さい

  • 解決済

    Rubymine について

    Ruby on Rails でrubymine を使おうと思っているのですが、bundle installの際に 40:230: execution error: The la

  • 解決済

    RubyMineでデバック実行(虫眼鏡)がうまくいかない

    前提・実現したいこと RubyMineで以前作ったRailsアプリをデバック(虫眼鏡)を実行しても以下のようなメッセージが出て実行できません。 発生している問題・エラーメッセ

同じタグがついた質問を見る

  • Ruby

    5196questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    5076questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Ruby on Rails 5

    91questions

  • IntelliJ IDEA

    85questions

    IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

  • RubyMine

    31questions

    RubyMineは、Ruby/Ruby on RailsベースのWebアプリケーション開発を行うためのIDEです。コードエディタやコードアシスタンス、グラフィカルなデバッガを搭載しており、様々なバージョン管理システムに対応しています。