2014-09-29 6 views
17

Qualcuno sa perché a IntelliJ Idea Ultimate non piacciono i letterali hash Ruby nella sintassi più recente? Fare riferimento alle sottolineature rosse nel mio screenshot dall'IDE qui sotto. Sintassi:IntelliJ Idea Ultimate red-underlines Ruby stenografia letterale hash

{key1: "value", key2: 123} 

Davvero fastidioso in quanto significa che tutto il mio progetto ha una sottolineatura rossa tutta la strada fino l'albero delle directory.

Ho installato un rubino SDK versione superiore alla 1.9 (che è quando penso che la sintassi letterale nuova hash è stato introdotto) nei preferenze IDE, quindi non ci sono scuse!

Grazie.

Screenshot from IntelliJ Ultimate

+0

Hai trovato una soluzione che funzioni per te? – Daryn

+0

Purtroppo non l'ho fatto! Ho appena deciso che avere due sintassi diverse per gli hash era confuso e ho usato una regex complicata per sostituire tutti i casi di nuova sintassi con la sintassi del razzo. –

+0

Potrei cancellare questi errori creando un nuovo progetto ruby ​​on rails con IntelliJ IDEA (14.14) con Ruby Plugin (ruby-7.1.0.20150304). Ho spostato tutti i miei file precedenti in questo nuovo progetto. Non ho potuto correggere questo errore con altre soluzioni ... – ataru

risposta

-8

risposta è quella di sostituire ogni utilizzo della nuova sintassi hash orribile con quello vecchio con un espressione regolare (non ancora perfetto, ma funziona ~ 95% del tempo).

files=gfind . -iregex '.*\(rb\|haml\)' -printf '%p\n' for file in $ file fanno gsed -i "s/([a-z _] +): {1} \ s + (('\ |" '? "'") \ [- un -zA-Z0-9 {}: @] + ('\ | "'" '") \?) /: \ 1 => \ 2/g" $ file done

2

Questo sembra essere un bug nel plugin rubino: http://devnet.jetbrains.com/thread/457333

chi non voglia cambiare il suo codice di base, le seguenti operazioni ha risolto il problema per me:

  • Apri File -> Progetto Struttura
  • Aprire il cambiamento Tab Progetto
  • il livello Progetto
  • Fare clic su OK

IntelliJ ora chiede se si desidera ricaricare il progetto. Dopo averlo fatto, la "nuova" sintassi di hash viene considerata corretta ...

Modifica: Non importa ciò che viene selezionato come livello di lingua in quanto è rilevante solo per il codice Java, ma a quanto pare ciò fa scattare qualcosa nel codice parser ...

0

dsager's answer non funziona più in Intellij Idea 14. Credo che abbiano aggiunto la possibilità di cambiare i livelli di lingua senza dover ricaricare (ottimo per lo sviluppo java, ma si interrompe). È una soluzione scadente, ma l'unico modo che ho trovato ora è quello di creare un nuovo progetto rubino e quindi spostare tutte le risorse esistenti in esso. Qualcosa di simile a quanto segue:

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

Crea nuovo progetto ruby ​​'my_project' con appropriata SDK, quindi:

mv ${PROJECT}2 $PROJECT 

Nota a margine: Hanno fatto il comando di Idea 'Apri' più flessibile in 14 in quanto è possibile apri qualsiasi directory ... molto simile a quella di RubyMine. È abbastanza conveniente aprire qualsiasi cosa che non sia un progetto java, ma questo è fastidioso.

+0

Questa è stata l'UNICA soluzione che ha funzionato per me e ho letteralmente provato tutto il resto che è stato raccomandato. La sua sceneggiatura non ha funzionato bene per me, quindi l'ho fatto manualmente – Scottmas

3

Sotto OSX IntelliJ 14 Sono riuscito a risolvere questo problema chiudendo il progetto e riaprendolo.

In tutta onestà, ho provato a impostare il "livello di lingua" del progetto, ma mostra solo gli SDK Java, che non dovrebbero influire sul mio modulo principale di Ruby.

7

Come ho risolto questo Intellij 14.1:

  1. File -> Progetto Struttura
  2. Cancellare il modulo esistente, che default a Java (non elimina i file effettivi)
  3. Utilizzare il pulsante verde + per creare un nuovo modulo con lo stesso nome/posizione, ma questa volta associato a Ruby on Rails anziché Java (con SDK corretto)
  4. File -> Chiudi progetto
  5. Riapri progetto.

In precedenza ho provato solo a cambiare l'SDK del progetto dall'impostazione predefinita di Java a Ruby, ma ciò non risolveva il problema.

+0

Ho aperto il modulo, che era uno di quelli di tipo rails, e ho impostato il suo SDK di modulo su ruby ​​(dovevo aggiungere l'SDK di Ruby). –

1

Quello che mi ha aiutato nel mio caso:

  • Apri File -> Progetto Struttura
  • corrente Rimuovere utilizzando il modulo
  • modulo di importazione (percorso insieme al progetto)
  • Intellij ha fatto riposare per me
0

Impostazione del Ruby SDK corretto, riavvio, annullamento della cache e reinstallazione del plug-in Ruby .. tutto non ha funzionato per me. Ho aggiornato IntelliJ al 2016.