Gemfile, stessa libreria e due versioni diverse

Ciao a tutti,

ho un’applicazione in Rails che necessita della stessa libreria con due
versioni diverse per venire incontro all’amb-iente di sviluppo e
produzione.

Nello specifico in produzione necessita di “Therubyracer 0.10.2” mentre
in sviluppo sono stato costretto ad aggiornare a “Therubyracer 0.12.1”
per incompatibilità della prima con OSX Mavericks.

Ora: come faccio a specificare nel Gemfile che quando parte in locale
deve usare la 0.12.1 mentre quando effettuo il deploy con Capistrano di
usare ancora la 0.10.2?

Grazie in anticipo,
Yuri.

Ciao,

Potresti fare qualcosa del genere nel tuo Gemfile:

group :test, :development do
gem ‘rspec-rails’
gem ‘rspec-set’
gem ‘factory_girl_rails’
gem ‘faker’
gem ‘fakes3’
end

Specificando anche la versione.

2014-07-23 15:49 GMT+02:00 Yuri R. [email protected]:

Ora: come faccio a specificare nel Gemfile che quando parte in locale
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


David N. Welton

http://www.welton.it/davidw/

http://www.dedasys.com/

Ciao Yuri,

potresti mettere le due gemme in due gruppi separati (:development,
:production) con la rispettiva versione.

Se non erro capistrano dovrebbe gi fare il bundle senza le gemme di
development e test.

Mentre in locale bundle install --without production

Fabrizio M.

Il giorno 23 luglio 2014 15:49, Yuri R.
[email protected]
ha scritto:

In effetti era la cosa più ovvia che avevo pensato ma non funziona:

You cannot specify the same gem twice with different version
requirements.
You specified: therubyracer (~> 0.10.2) and therubyracer (~> 0.12.1)

2014-07-23 15:49 GMT+02:00 Yuri R. [email protected]:

Nello specifico in produzione necessita di “Therubyracer 0.10.2” mentre

in sviluppo sono stato costretto ad aggiornare a “Therubyracer 0.12.1”
per incompatibilit della prima con OSX Mavericks.

Io evito del tutto therubyracer e installo nodejs, che viene poi usato
per
compilare gli assets.
Meno grattacapi e meno compilazioni infinite.
Anche Heroku ne scoraggia l’uso:

Dovrebbe bastare brew install nodejs / apt-get install nodejs

Alessandro L.
[email protected]
m. +39 3290916127

Grazie Alessandro,

purtroppo non ho questa flessibilità essendo un’applicazione “Legacy”
sulla quale non ho completo controllo quindi il passaggio a Node.js non
è possibile o comunque non immediato.

In produzione non funziona proprio con la 0.12.1 ?

Fabrizio M.

Il giorno 23 luglio 2014 16:07, Yuri R.
[email protected]
ha scritto:

Ciao Yuri,

Il motivo per cui Bundler non ti permette di avere gemme con versioni
diverse è semplice:

Bundler è stato concepito per avere gli env di sviluppo e deploy il
più simile possibile.

Se non puoi usare node.js, ti consiglio di lavorare in una VM il più
simile possibile all’env di deploy.
Puoi usare Vagrant http://www.vagrantup.com/ e VirtualBox
https://www.virtualbox.org/

PS: ma il forum ancora marca come spam la parola ambi-ente? :-/

Per il momento mi sono adattato.

In sviluppo lascio indicata Therubyracer 0.12.1 mentre quando devo
deployare cambio il Gemfile e Gemfile.lock con la versione 0.10.2

Orrendo, lo so, ma non vedo altra soluzione.

Fabrizio M. wrote in post #1153304:

In produzione non funziona proprio con la 0.12.1 ?

Fabrizio M.
http://dev.welaika.com

Il giorno 23 luglio 2014 16:07, Yuri R.
[email protected]
ha scritto:

Ho provato ma mi ha dato un errore.

Ammetto che non ho indagato per problemi di tempo ma, se possibile,
vorrei evitare di cambiare la versione di una libreria che funziona
sull’amb-iente di produzione.
E’ già successo per altra libreria è sono occorsi problemi.

Il problema è con Mavericks perchè con Lion andava tutto.

Ma se invece fai il contrario e in development passi a nodejs? :slight_smile:

Ju


M.Sc. Ju Liu
Twitter: @arkh4m http://twitter.com/arkh4m
Skype: johnny_arkham
Card: http://zerp.ly/ju-liu

Societ Cooperativa weLaika
Corso Vigevano 14/B, 10154 Torino (TO), Italy
http://welaika.com - [email protected]

2014-07-23 15:39 GMT+01:00 Yuri R. [email protected]:

Scusa non puoi usare node.js in locale e lasciare therubyracer dentro
:group => :production?

In locale dovresti poter saltare linstallazione di therubyracer con
bundle install --without production

Bello non ma almeno ti puoi risparmiare di cambiare il Gemfile quando
devi deployare (che e proprio da GTFO :D)


Matteo L.

Il giorno 23/lug/2014, alle ore 16:39, Yuri R.
[email protected] ha scritto: