2016-01-23 8 views
9

Sto costruendo un'applicazione Greenfield Rails su Ruby 2.3 e vorrei tutti i comandi Rails (ad esempio rails s, rails c) e tutti i comandi Ruby (ad esempio rake do:something) per utilizzare la nuova funzionalità immutable-String introdotta in Ruby 2.3. (Vedi, ad esempio https://wyeworks.com/blog/2015/12/1/immutable-strings-in-ruby-2-dot-3/)Come abilitare Ruby 2.3 `--enable-frozen-string-literal` globalmente in Rails?

Quindi, come faccio a passare quella deliziosa opzione --enable-frozen-string-literal Ruby a Ruby in tutti i contesti possibili in cui alcuni comandi che mi danno il fondo in Ruby?

Grazie in anticipo!

risposta

13

Per quanto ne so, il modo migliore per farlo è la creazione variabile di ambiente come segue:

export RUBYOPT=--enable-frozen-string-literal 

o

setenv RUBYOPT --enable-frozen-string-literal 

Tuttavia, non provare subito. Semplicemente non funziona perché alcuni codici nella gemma di Bundler stanno tentando di modificare la stringa congelata. Aspetta finché non risolvono il problema.

+0

Bundler deve essere in grado di supportare letterali stringa congelati [dalla versione 1.2] (http://bundler.io/v1.12/whats_new.html). Se continua a non funzionare, presenta un problema come [questo] (https://github.com/bundler/bundler/issues/4520). –

+0

Più portatile: 'RUBYOPT = - enable-frozen-string-literal; export RUBYOPT' funzionerà con '/ bin/sh' su FreeBSD, bash, zsh, fish, ecc. – Barry

+0

e se le gems stanno provando a modificare le stringhe? Probabilmente non è comune, ma sono sicuro che succederà da qualche parte. –

Problemi correlati