Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save lorenadl/c80413514bee296fff05030ef8a76bb8 to your computer and use it in GitHub Desktop.
Save lorenadl/c80413514bee296fff05030ef8a76bb8 to your computer and use it in GitHub Desktop.
[RoR] Configurare un ambiente di sviluppo RoR con Vagrant
---- Ambiente di sviluppo RoR con Vagrant ----
http://www.intelligentbee.com/blog/2013/09/17/setup-a-simple-ruby-2-on-rails-4-environment-with-vagrant-and-virtual-box/
1. Scaricare ed installare Vagrant
controllare la verione con:
> vagrant -v
2. Creare una cartella per l'applicazione Rails
>mkdir myapp
>cd myapp
3. Inizializzare la macchina virtuale Vagrant:
>vagrant init hashicorp/precise64
Supponiamo che la cartella 'rorscheduler' che contiene il Vagrantfile sia in
c:\vagrant
--- Controllare che nel Vagrantfile sia configurato il forward della porta 3001 (o altra) della VM sulla macchina fisica:
Trovare questa riga:
# config.vm.network :forwarded_port, guest: 80, host: 8080
ed aggiungere appena sotto questa:
config.vm.network :forwarded_port, guest: 3001, host: 3001
--- Far partire la macchina virtuale
>vagrant up
--- Accedere alla VM con ssh
>vagrant ssh
- Se compare l'errore:
'ssh' executable not found in any direcotries in the %PATH% variable...
vuol dire che non è installato ssh.
Usare putty su 127.0.0.1:2222
(username e password: vagrant)
---
--- Per andare nella cartella dell'applicazione:
>cd /vagrant
nota: esiste anche /home/vagrant, ma non è questa la cartella giusta!!!
--- Ci assicuriamo che apt-get sia aggiornato:
>sudo apt-get update
--- localizzazione (lanciare questi comandi, altrimenti poi ci sono casini con i db)---
>sudo locale-gen it_IT.UTF-8
>sudo dpkg-reconfigure locales
--- Installiamo curl (necessario per Ruby2):
>sudo apt-get install curl
--- Installiamo RVM e l'ultima versione di Ruby con un solo comando:
>\curl -L https://get.rvm.io | bash -s stable --ruby
- dà errore "GPG signature verification failed".
eseguo comando suggerito:
(esempio) >gpg --keyserver hkp://keys.gnupg.net --recv-keys xxxx
OK. Rifaccio:
>\curl -L https://get.rvm.io | bash -s stable --ruby
OK!!!!
--- Ricarico il profilo (attenzione che nella shell dos il copia/colla non copia la ~):
>source ~/.profile
(~ refers to your home directory, so you can always type $HOME instead of ~)
--- Controlliamo la versione di rvm (che dovrebbe essersi installato):
>rvm -v
--- Controlliamo ruby (dovrebbe aver installato l'ultima versione):
>rvm list
ma potrebbe non corrispondere con la versione in uso:
>ruby -v
--- Controllare che nel file ~/.profile ci sia questa riga (altrimenti non possiamo cambiare tra le versioni di Ruby):
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
--- Ricaricare il profilo:
>source ~/.profile
--- Creare gemfile e file di configurazione automatica che imposta da solo versione di ruby e gemset quando si entra nella directory
rvm --create --rvmrc 2.1.5@myapp
-----------------------------------------------------------------------------
--- Possiamo cambiare la versione in uso di Ruby con il comando:
(rvm use ruby-2.0.0-p247)
>rvm use ruby-2.1.5
e poi ricontrollare la versione di Ruby:
>ruby -v
--- OK, Ruby è a posto.
--- Usiamo i gemset di rvm
- creo nuovo gemset
>rvm gemset create myapp_project
- controllo se ha creato il gemset
>rvm gemset list
--- impostiamo il ruby + gemset da usare
>rvm use 2.2.1@myapp_project
-----------------------------------------------------------------------------
-- Rails si può mettere nel Gemfile, per cui non è necessario installarlo
Se serve installare rails:
>gem install rails
Controlliamo la versione:
>rails -v
---
--- eseguire i seguenti comandi, altrimenti 'bundle install' dà errore su pg (Can't find the 'libpq-fe.h header)
e rmagick (An error occurred while installing rmagick (2.13.4), and Bundler cannot continue):
>sudo apt-get install libpq-dev
>sudo apt-get install libmagickwand-dev imagemagick
--- installare le gemme che servono con bundler
>cd /vagrant/myapp
>bundle install
--- Facciamo partire il server (con rails 4 è necessario fare il binding di 0.0.0.0 con parametro -p per impostare una porta diversa):
- Ricordarsi sempre di impostare rvm per usare la versione giusta di ruby e gemset (basta la prima volta):
>rvm use 2.2.1@myapp_project
>rails server -b 0.0.0.0 -p 3001
Vediamo l'app:
http://localhost:3001/
------ configurazione virtual host (itmanager)
<VirtualHost *:80>
# This Rails web app will use Ruby 2.2.1, as installed by RVM
PassengerRoot /usr/local/rvm/gems/ruby-2.2.0@myapp_project/gems/passenger-4.0.59
PassengerRuby /usr/local/rvm/gems/ruby-2.2.1@myapp_project/wrappers/ruby
ServerName myapp.mydomain.com
DocumentRoot /var/www/html/myapp/public
RailsEnv development
<Directory /var/www/html/myapp/public>
AllowOverride all
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
Attenzione: è possibile usare un solo passenger anche se ci sono più versioni di ruby installate con rvm (vedi righe PassengerRoot e PassengerRuby)
----------------------------------------------
-------- Vagrant Box (backup vm) con Virtualbox-------
http://superuser.com/questions/635256/copy-vagrant-box-locally
--- chiudere l'ssh sulla vm (putty)
--- Da prompt di dos (non da putty), entrare nella cartella che contiene il Vafrantfile:
(Questo comando esporta un box file chiamato package.box di default)
>vagrant package
--- aggiungo il box file package.box alle boxes esistenti:
>vagrant box add --name myapp --provider virtualbox package.box
--- controllo che l'abbia aggiunta:
>vagrant box list
------------- DA TESTARE------------
------------ Per ripristinare la vm dal box file
--- Creare una nuova cartella e inizializzare vagrant come al solito:
>vagrant init
--- impostare la box che ci interessa nel Vagrantfile:
config.vm.box = "myapp"
--- La vm si accenderà con gli stessi identici dati della vm precedente lanciando:
>vagrant up
ok!!
Così si è creata una vm identica alla precedente.
Dobbiamo modificare il Vagrantfile per forwardare la porta 3001:
config.vm.network :forwarded_port, guest: 3001, host: 3001
Dobbiamo poi copiarci dentro i sorgenti (nella cartella /vagrant) e tutto funziona.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment