Problemi con rails

Ciao a tutti,
ho iniziato in questi giorni a usare rails.

Ho installato RoR su win 7 e questa è la mia script\about

About your application’s environment
Ruby version 1.9.1 (i386-mingw32)
RubyGems version 1.3.7
Rack version 1.1
Rails version 2.3.8
Active Record version 2.3.8
Active Resource version 2.3.8
Action Mailer version 2.3.8
Active Support version 2.3.8
Application root F:/rubyProject/depot
Environment development
Database adapter mysql
Database schema version 0

1- ho creato la mia app: rails depot -d mysql
2- ho creato il database: rake db:create
3- ho creato la tabella “products”
4- lancio: ruby script\generate scaffold Product
5- attivo webrick
6- vado su localhost:3000/products e trovo che (correttamente) la lista
è vuota
7- allora voglio inserire un nuovo prodotto, clicco su “new” ma la
videata è vuota, nel form di introduzione non c’è un campo (vedi img
allegata) e se clicco su create Ruby s’inchioda…

Credo che Rails non riesca a connettersi con il db…o forse è un’altra
cosa…

includo anche il database.yml:

development:
adapter: mysql
encoding: utf8
reconnect: false
database: depot_development
pool: 5
username: root
password: password
host: localhost

Warning: The database defined as “test” will be erased and

re-generated from your development database when you run “rake”.

Do not set this db to the same as development or production.

test:
adapter: mysql
encoding: utf8
reconnect: false
database: depot_test
pool: 5
username: root
password: password
host: localhost

production:
adapter: mysql
encoding: utf8
reconnect: false
database: depot_production
pool: 5
username: root
password: password
host: localhost

Qualcuno mi può dare una mano ?

Grazie in anticipo !

Ciao

dovresti vedere cosa riporta il development log.
Inoltre sembra devi editare “database.yml” con i dati di accesso al db
corretti (uname, password)

ciao :wink:

dovresti essere un po’ più specifico riguardo l’errore di rails: quando
dici “ruby si inchioda”, cosa intendi?

ciao,
A.

Il 07/06/2010 15:33, An Car ha scritto:

Salvatore Ferrucci wrote:

On 06/07/2010 03:33 PM, An Car wrote:

Active Record version 2.3.8
3- ho creato la tabella “products”
4- lancio: ruby script\generate scaffold Product

Hai dato rake db:migrate ?

Prova a mettere almeno un campo quando crei lo scaffold ( ruby
script/generate scaffold Product name:string ) altrimenti
la form e’ vuota.

Facci sapere se funziona :wink:


Salvatore

Vado immediatamente a provare
rilancio lo scaffold Product name:string
e poi faccio un rake db:migrate

Poi vi fo sapere…

Intanto grazie mille per l’aiuto !!

Salvatore Ferrucci wrote:

On 06/07/2010 03:33 PM, An Car wrote:

Active Record version 2.3.8
3- ho creato la tabella “products”
4- lancio: ruby script\generate scaffold Product

Hai dato rake db:migrate ?

Prova a mettere almeno un campo quando crei lo scaffold ( ruby
script/generate scaffold Product name:string ) altrimenti
la form e’ vuota.

Facci sapere se funziona :wink:


Salvatore

Sob…

ho provato a fare come mi avete consigliato ma il risultato è questo:
"
F:\rubyProject\depot>rake db:migrate --trace
(in F:/rubyProject/depot)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
Mysql::Error: query: not connected: CREATE TABLE schema_migrations
(version varchar(255) NOT NULL) ENGINE=InnoDB
C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract_adapter.rb:221:in
rescue in log' C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract_adapter.rb:204:inlog’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/connection_adapters/mysql_adapter.rb:323:in
execute' C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/schema_statements.rb:109:increate_table’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/connection_adapters/mysql_adapter.rb:477:in
create_table' C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/schema_statements.rb:369:ininitialize_schema_migration
table’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/migration.rb:441:in
initialize' C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/migration.rb:401:innew’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/migration.rb:401:in
up' C:/Ruby191/lib/ruby/gems/1.9.1/gems/activerecord-2.3.8/lib/active_record/migration.rb:383:inmigrate’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rails-2.3.8/lib/tasks/databases.rake:112:in
block (2 levels) in <top (required)>' C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:636:incall’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:636:in block in execute' C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:631:ineach’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:631:in
execute' C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:597:inblock
in invoke_with_call_chain’
C:/Ruby191/lib/ruby/1.9.1/monitor.rb:190:in mon_synchronize' C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:590:ininvoke_with_call_chain’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:583:in
invoke' C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2051:ininvoke_task’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2029:in
block (2 levels) in top_level' C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2029:ineach’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2029:in
block in top_level' C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:instandard_exception_handling’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2023:in
top_level' C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2001:inblock in run’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:in
standard_exception_handling' C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:1998:inrun’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/bin/rake:31:in <top (required)>' C:/Ruby191/bin/rake:19:inload’
C:/Ruby191/bin/rake:19:in `’
"

:frowning:

in questo caso è chiaro che hai un problema di collegamento al db. hai
modificato il file config/database.yml?

tieni presente che devi installare la gemma ruby-mysql e il server mysql
deve essere attivo.

ciao,
A.

Il 08/06/2010 11:19, An Car ha scritto:

On 06/07/2010 03:33 PM, An Car wrote:

Active Record version 2.3.8
3- ho creato la tabella “products”
4- lancio: ruby script\generate scaffold Product

Hai dato rake db:migrate ?

Prova a mettere almeno un campo quando crei lo scaffold ( ruby
script/generate scaffold Product name:string ) altrimenti
la form e’ vuota.

Facci sapere se funziona :wink:


Salvatore

Andrea P. wrote:

in questo caso � chiaro che hai un problema di collegamento al db. hai
modificato il file config/database.yml?

tieni presente che devi installare la gemma ruby-mysql e il server mysql
deve essere attivo.

ciao,
A.

Il 08/06/2010 11:19, An Car ha scritto:

Ciao Andrea,

ho installato la gemma mysql (gem install mysql) e ho verificato che
mysql fosse attivo (è installato come servizio)…

La configurazione di database.yml è quella che genera rails:

rails depot -d mysql

Mi sa che devo studiare ancora: ero convinto che la struttura delle
tabelle con Rails non dovessi dichiararla nel modello ma che
implicitamente il modello leggesse la tabella e acquisisse gli attributi
di classe…

vado sulla guida on line di rails…

Grazie per l’aiuto !

Alla prossima !

Come accedi al db?

se accedi con “mysql -u root -p” e la password non l’hai impostata
allora modifica i campi “username” e “password” del file “database.yml”
con:

username: root
password:

sia per il db si sviluppo che per il db di produzione.

Il 08/06/2010 11:39, An Car ha scritto:

La configurazione di database.yml è quella che genera rails:

rails depot -d mysql

fin qui è ok, ma se hai impostato una password di accesso a mysql devi
specificarlo nel database.yml :stuck_out_tongue:

Mi sa che devo studiare ancora: ero convinto che la struttura delle
tabelle con Rails non dovessi dichiararla nel modello ma che
implicitamente il modello leggesse la tabella e acquisisse gli attributi
di classe…

esatto, nel modello dichiari eventuali associazioni con altri modelli,
le regole di validazione per i campi, etc… :wink:

tuttavia, quando crei uno scaffold, dovresti specificare i campi che ti
servono, altrimenti la form non ha nulla da mostrare. nel caso in cui
volessi aggiungerli dopo puoi farlo, ma i files delle view li dovrai
aggiornare a mano :slight_smile:

ciao,
A.

pezzuya … wrote:

Come accedi al db?

se accedi con “mysql -u root -p” e la password non l’hai impostata
allora modifica i campi “username” e “password” del file “database.yml”
con:

username: root
password:

sia per il db si sviluppo che per il db di produzione.

Ciao Pezzuya,

ho settato mysql con

user: root
password: lamiapass

Ho riportato in database.yml sia user che password così come sono
settati in mysql. (Li uso nella linea di comando mysql per accedere al
servizio mysql e funzionano)…

non so più cosa pensare…

grazie per il suggerimento :slight_smile:

An Car wrote:
si sviluppo che per il db di produzione.

Ciao Pezzuya,

ho settato mysql con

user: root
password: lamiapass

Ho riportato in database.yml sia user che password così come sono
settati in mysql. (Li uso nella linea di comando mysql per accedere al
servizio mysql e funzionano)…

non so più cosa pensare…

grazie per il suggerimento :slight_smile:

alcune volete mi e’ capitato che fosse necessario inserire nel
database.yml
anche il socket per poter far funzionare Rails con mySql

Andrea P. wrote:

Il 08/06/2010 11:39, An Car ha scritto:

La configurazione di database.yml � quella che genera rails:

rails depot -d mysql

fin qui � ok, ma se hai impostato una password di accesso a mysql devi
specificarlo nel database.yml :stuck_out_tongue:

Mi sa che devo studiare ancora: ero convinto che la struttura delle
tabelle con Rails non dovessi dichiararla nel modello ma che
implicitamente il modello leggesse la tabella e acquisisse gli attributi
di classe…

esatto, nel modello dichiari eventuali associazioni con altri modelli,
le regole di validazione per i campi, etc… :wink:

tuttavia, quando crei uno scaffold, dovresti specificare i campi che ti
servono, altrimenti la form non ha nulla da mostrare. nel caso in cui
volessi aggiungerli dopo puoi farlo, ma i files delle view li dovrai
aggiornare a mano :slight_smile:

ciao,
A.

Infatti ho creato con scaffold il modello product aggiungendo
titolo:string e nel form per inserimento nel di db è comparso il campo
“titolo”…

però mi aspettavo che si leggesse tutta la tabella…
nulla di male intendiamoci…

Il 08/06/2010 14:15, An Car ha scritto:

Infatti ho creato con scaffold il modello product aggiungendo
titolo:string e nel form per inserimento nel di db è comparso il campo
“titolo”…

però mi aspettavo che si leggesse tutta la tabella…
nulla di male intendiamoci…

scusa, ma cosa intendi per “tutta la tabella”? i campi sono quelli della
migrazione. puoi anche aggiungerne altri a mano o in un secondo tempo
(creando una nuova migrazione a parte), ma chiaramente la form dovrai
modificarla tu :wink:

il comportamento di leggere automaticamente i campi della tabella per
generare le form è una caratteristica che puoi trovare in altri
framework (es: Python Django). per rails esistono alcuni plugin che
permettono la stessa cosa, ma non li ho mai provati e quindi non saprei
dirti altro.

a mio parere queste funzionalità possono andare bene per ragionamenti
standard
, ma se devi creare form più o meno complesse e/o molto
personalizzate, ti fanno perdere un casino di tempo per modificarle.

ciao,
a.

il comportamento di leggere automaticamente i campi della tabella per
generare le form è una caratteristica che puoi trovare in altri
framework (es: Python Django). per rails esistono alcuni plugin che
permettono la stessa cosa, ma non li ho mai provati e quindi non saprei
dirti altro.

Puoi provare http://activescaffold.com/
E’ abbastanza comodo ma lo userei solo per un’applicazione da intranet.
Quelle esposte ad internet di solito necessitano di form più
personalizzati e l’unica cosa da fare è programmarseli a mano.

Riguardo al problema con il db, è probabile che qualcosa non quadri
nella configurazione di database.yml. Verosimilmente qualche parametro
tra username, password, host e porta è sbagliato. Controlla
Help with Rails/MySQL setup on Windows - Rails - Ruby-Forum in cui si parla di un problema
analogo.

Paolo