2014-09-29 34 views
17

任何人都知道爲什麼IntelliJ Idea Ultimate不喜歡新語法中的Ruby哈希文字?請參閱下面IDE中截圖中的紅色下劃線。語法:IntelliJ Idea終極紅色下劃線Ruby速記哈希文字

{key1: "value", key2: 123} 

真的很煩人,因爲這意味着我的整個項目在目錄樹中都有一個紅色下劃線。

我已經建立了的Ruby SDK版本大於1.9(這是當我想介紹了新的散列文字語法)在IDE喜好,所以沒有任何藉口!

謝謝。

Screenshot from IntelliJ Ultimate

+0

您是否找到適合您的解決方案? – Daryn 2015-06-25 09:46:57

+0

我沒有遺憾!我只是認爲有兩種不同的散列語法是令人困惑的,並且使用了複雜的正則表達式來用火箭語法替換所有新語法的情況。 – 2015-06-26 13:55:41

+0

我可以用IntelliJ IDEA(14.14)和Ruby Plugin(ruby-7.1.0.20150304)創建新的ruby on rails項目來消除這些錯誤。我將所有以前的文件移到這個新項目中。我無法通過任何其他解決方案解決這個錯誤... – ataru 2015-08-25 15:32:25

回答

-8

答案是與舊的使用正則表達式來代替可怕的新的哈希語法的每次使用(不是很完美,但工程的〜95%的時間)。

files=gfind . -iregex '.*\(rb\|haml\)' -printf '%p\n' 在$文件的文件 做 gsed -i 「S /(A-Z _] +):{1} \ S +(('\ |」?「'」)\ [ - 一個-zA-Z0-9 {}:@] +('\ |''''「)\?)/:\ 1 => \ 2/g」$ file done

2

這似乎是臭蟲在Ruby插件:http://devnet.jetbrains.com/thread/457333

誰不覺得自己改變自己的代碼庫,以下步驟解決我這個問題:

  • 打開文件 - >項目結構
  • 打開項目選項卡
  • 更改項目語言水平
  • 單擊確定

的IntelliJ現在會詢問您是否想重新加載您的項目。這樣做後,「新的」哈希語法被認爲是正確的...

編輯:你選擇語言級別並不重要,因爲它只與Java代碼相關,但顯然這會觸發代碼中的某些內容解析器...

0

dsager's answer不再適用於Intellij Idea 14.我相信他們增加了切換語言層次而不必重新加載的能力(對Java開發很好,但是打破了這一點)。這是一個蹩腳的解決方法,但我現在發現的唯一方法是創建一個新的ruby項目,然後將所有現有的源代碼移入其中。像下面這樣:

PROJECT=my_project 
cp -lr $PROJECT ${PROJECT}2 
rm -rf ${PROJECT}2/.idea ${PROJECT}2/*.iml 

創建新的Ruby項目「MY_PROJECT」用相應的SDK,然後:

mv ${PROJECT}2 $PROJECT 

旁註:他們在,你可以做理念的「打開」命令,在14更加靈活打開任何目錄...非常類似於RubyMine。打開任何不是Java項目的東西都很方便,但這個很煩人。

+0

這是唯一的解決方案,爲我工作,我從字面上嘗試了一切建議。他的腳本雖然不適合我,但我手動完成了。 – Scottmas 2015-11-20 01:06:20

3

在OSX IntelliJ 14下我可以通過關閉項目並重新打開它來解決這個問題。

公平地說,我確實嘗試設置項目的「語言級別」,但它只顯示Java SDK,它不應該影響我的主要Ruby模塊。

7

我如何在的IntelliJ 14.1固定的:

  1. 文件 - >項目結構
  2. 刪除其默認爲Java(不刪除實際的文件)
  3. 使用綠色+按鈕現有的模塊創建一個具有相同名稱/位置的新模塊,但這次與Ruby on Rails相關聯,而不是Java(使用正確的SDK)
  4. 文件 - >關閉項目
  5. 重新打開項目。

此前我嘗試過將項目SDK從默認的Java更改爲Ruby,但是這並沒有解決問題。

+0

我打開了模塊,這是一個rails模塊,並將其Module SDK設置爲ruby(必須添加Ruby SDK)。 – 2015-07-16 00:18:38

1

什麼在我的情況下幫我:

  • 打開文件 - >項目結構
  • 使用模塊
  • 導入模塊(設定的路徑到您的項目)
  • 的IntelliJ沒有休息我刪除當前
0

設置正確的Ruby SDK,重新啓動,無效緩存並重新安裝Ruby插件..它都不適用於我。我將IntelliJ升級到2016.