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
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
–
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
–
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:in
log’
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:in
create_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:in
initialize_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:in
new’
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:in
migrate’
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:in
call’
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:in
each’
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:in
block
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:in
invoke_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:in
invoke_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:in
each’
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:in
standard_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:in
block 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:in
run’
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/bin/rake:31:in <top (required)>' C:/Ruby191/bin/rake:19:in
load’
C:/Ruby191/bin/rake:19:in `’
"
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
–
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
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…
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
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
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
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
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…
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
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
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