# QuickStart Rafactoring Exercise - Was: creazione di database

**URL:** <https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474>\
**Category:** IT\
**Created:** [November 7, 2006, 10:45am UTC](https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474 "2006-11-07T10:45:41Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [November 7, 2006, 10:45am UTC](https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474/1 "2006-11-07T10:45:41Z")

</div>

dato che [ruby-it.org](http://ruby-it.org) ha dei problemi posto qui il rake rask che ho fatto  
per  
autocrearmi i database a partire da database.yml. buon refactoring 🙂

funziona con MySql, assumendo password/uid a null, insomma con i  
settaggi di  
InstantRails. funziona lanciandolo dalla root del progetto. funziona se  
e  
solo se il tuo database server contiene il database di default ‘mysql’  
(questo perchè devo collegarmi a un db, per poter creare un db!). funziona  
solo durante i giorni che sono anche numeri primi 🙂

il file va salvato come create\_db.rake sotto lib/tasks

PS: manca anche un altro task che lanci questo _e_ lanci le migrations.

* * *

desc ‘Create Initial Databases, locally, with no uid/pwd, on MySql dbs’  
task :create\_dbs =\> :environment do

db\_cfg = YAML.load(File.read(“config/database.yml”))

databases = [db\_cfg[‘development’], db\_cfg[‘production’],  
db\_cfg[‘test’]  
]

unless databases.all? {|db| db[‘adapter’] == ‘mysql’}  
raise “this works only with mysql adapters”  
end

databases.each do |db|

```
if db['adapter'] == 'mysql'
  default_database = 'mysql'
end

ActiveRecord::Base.establish_connection(
  :adapter => db['adapter'],
  :database => default_database
)

ActiveRecord::Base.connection.create_database db['database']

```

end  
end

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [November 7, 2006, 10:46am UTC](https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474/2 "2006-11-07T10:46:15Z")

</div>

forse l’orrore del mio codice non era sufficiente. vediamo se questo  
provoca  
qualche suggerimento…

# justdoit.rake

desc ‘Create Initial Databases, run Migrations’  
task :justdoit =\> :environment do  
%x{rake create\_dbs}  
%x{rake migrate }  
end

On 10/30/06, chiaro scuro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> il file va salvato come create\_db.rake sotto lib/tasks  
> databases = [db\_cfg[‘development’], db\_cfg[‘production’],  
> end

–  
Chiaroscuro

: : i’m a miner : : | [therubymine.com](http://therubymine.com)

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [November 7, 2006, 10:46am UTC](https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474/3 "2006-11-07T10:46:49Z")

</div>

Alle 20:20, lunedì 30 ottobre 2006, chiaro scuro ha scritto:

> forse l’orrore del mio codice non era sufficiente. vediamo se questo  
> provoca qualche suggerimento…
> 
> # justdoit.rake
> 
> desc ‘Create Initial Databases, run Migrations’  
> task :justdoit =\> :environment do  
> %x{rake create\_dbs}  
> %x{rake migrate }  
> end

uhm… io pensavo più ad un qualcosa integrato in rails…  
una paginetta con cui si possono decidere dei valori base.

ad esempio  
su un programma con un sistema di autenticazione particolare (RBAC, ACL)  
impostare alcuni utenti di default ecc ecc

per quanto riguarda la creazione del database… sarebbe molto comodo  
fare un  
qualcosa di generico, anche se all’inizio si potrebbe provare con sqlite

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [November 7, 2006, 10:46am UTC](https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474/4 "2006-11-07T10:46:51Z")

</div>

certo, ma lo scopo dell’esercizio è che si fa un pezzo per volta 🙂 io ho  
fatto il minimo che serve a me e funziona. e dovrebbe andare per chi ha  
instantrails installato. altre cose non le ho fatte o perchè non mi  
servivano o perchè non le so fare. Ad esempio, potresti aggiungere parti  
di  
codice per capire con che db abbiamo a che fare, o per rimuvere gli  
orrendi  
%x{…}

On 10/31/06, kalos [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > %x{rake migrate }  
> > un  
> > qualcosa di generico, anche se all’inizio si potrebbe provare con sqlite
> 
> * * *
> 
> Ml mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Chiaroscuro

: : i’m a miner : : | [therubymine.com](http://therubymine.com)

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [November 7, 2006, 10:47am UTC](https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474/5 "2006-11-07T10:47:03Z")

</div>

Alle 23:05, lunedì 30 ottobre 2006, chiaro scuro ha scritto:

> certo, ma lo scopo dell’esercizio è che si fa un pezzo per volta 🙂 io ho  
> fatto il minimo che serve a me e funziona. e dovrebbe andare per chi ha  
> instantrails installato. altre cose non le ho fatte o perchè non mi  
> servivano o perchè non le so fare. Ad esempio, potresti aggiungere parti  
> di codice per capire con che db abbiamo a che fare, o per rimuvere gli  
> orrendi %x{…}

con rake purtroppo non posso esserti molto di aiuto

per quanto riguarda il tipo di db lo farei scegliere nella solita  
paginetta.

io avevo pensato a questa paginetta come un qualcosa che carica il db, o  
anche  
solo la struttura, e permette di aggiungere valori ecc e magari dopo  
avviare  
le migration

scusa… mi sono espresso male nella precedente email

ah poi se vuoi/devi usare rake, credo che la soluzione migliore sia  
quella di  
chiedere all’utente che db utilizzare

scusa se non butto giù nessun pezzo di codice… ma sono alle prese con il  
fastum gel!

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [November 7, 2006, 10:54am UTC](https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474/6 "2006-11-07T10:54:18Z")

</div>

Ho visto questo plugin (da linea di comando) che a quanto pare permette  
di  
installare in pochi secondi Typo. Forse potrebbe avere a che fare con  
questa  
idea, forse no… Lascio il link a chi voglia curiosare 🙂

> **[Rails Application Installer 0.2.0 :: scottstuff.net](https://scottstuff.net/blog/articles/2006/08/15/rails-application-installer-0-2-0/index.html)**
>
> I just released version 0.2.0 of my rails-app-installer tool.
> This is the installer that I created for Typo, extracted into its own package so other Rails apps can use it as well. The installer lets users install Typo with only two commands:
> $ sudo...

On 11/1/06, Massimiliano M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> l’utente accede gli viene presentata una form in cui specificare il  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Andrea R.

: : i’m a miner : : | [therubymine.com](http://therubymine.com)

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [November 7, 2006, 10:52am UTC](https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474/7 "2006-11-07T10:52:45Z")

</div>

> > uhm… io pensavo più ad un qualcosa integrato in rails…  
> > una paginetta con cui si possono decidere dei valori base.

> certo, ma lo scopo dell’esercizio è che si fa un pezzo per volta 🙂

Mi sa che i pezzi che dici tu non portano al risultato che dice lui. 😉

Riguardo l’idea di kalos, è ottima, ho incontrato diversi programmi in  
PHP che fanno così (mediawiki, egroupware, …), la prima volta che  
l’utente accede gli viene presentata una form in cui specificare il  
database e altre cose che vanno configurate solo all’inizio.  
Compatibile con il tuo caso d’uso (magari con il default su sqlite) e  
con quello di produzione.

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [November 7, 2006, 10:59am UTC](https://www.ruby-forum.com/t/quickstart-rafactoring-exercise-was-creazione-di-database/74474/8 "2006-11-07T10:59:04Z")

</div>

Mi sembra che le possibili soluzioni a questo problema creascano come i  
funghi in questo periodo.  
Date un occhiata qui  
[http://www.rubyinside.com/distributing-a-rails-application-as-a-single-file-289.html](http://www.rubyinside.com/distributing-a-rails-application-as-a-single-file-289.html)

A quanto sembra c’è la possibilità di creare un eseguibile una Rails  
application senza avere ruby e rails. Non ho capito però se ti danno anche  
il db.

Sicuramente non è brillante come la nostra idea ma per win è molto comodo 🙂

On 11/2/06, Andrea R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > > uhm… io pensavo più ad un qualcosa integrato in rails…  
> > > > database e altre cose che vanno configurate solo all’inizio.  
> > > > [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)
> 
> –  
> Andrea R.
> 
> : : i’m a miner : : | [therubymine.com](http://therubymine.com)

–  
Andrea R.

: : i’m a miner : : | [therubymine.com](http://therubymine.com)
