2014-09-29 80 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.