Bad file descriptor - connect(2) : Rails su Win2000

Ciao a tutti,
Stavolta scrivo per una rogna che proprio non riesco a risolvere…

Sto portando un’applicazione Rails in produzione e mi becco sto schifo
di
errore:

Bad file descriptor - connect(2)
RAILS_ROOT: ./script/…/config/…

Application Trace | Framework Trace | Full Trace
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/vendor/mysql.rb:108:in
initialize' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/vendor/mysql.rb:108:in real_connect’
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:330:in
connect' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:87:in initialize’
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:36:in
mysql_connection' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:251:in connection_without_query_cache=’
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/query_cache.rb:54:in
connection=' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:220:in retrieve_connection’
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:78:in
connection' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:696:in columns’
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:709:in
column_names' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:722:in column_methods_hash’
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1158:in
all_attributes_exists?' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:140:in all?’
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1158:in
all_attributes_exists?' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1095:in method_missing’
#{RAILS_ROOT}/app/models/user.rb:39:in authenticate' #{RAILS_ROOT}/app/controllers/account_controller.rb:10:in login’

Il mio ambiente di sviluppo è : WinXP - Ruby 1.8.4 - Rails 1.1.6 - Webrick
1.3.1 - MySQL 5
L’ambiente di produzione è: Win2000 - Ruby 1.8.4 - Rails 1.1.6 - Mongrel
0.3.13.3 - MySQL 5

La cosa strana è che in prod ho provato a lanciare l’app anche con Webrick
e
da lo stesso problema, quindi non è Mongrel che s’incazza.
In + se faccio script\console riesco ad interrogare correttamente gli
ActiveRecord, il che vuol dire che anche la connessione a DB funziona
correttamente (e l’ho verificato anche con MySQL query browser).

Veramente non so dove sbattere la testa… avete qualche idea?


Paolo D.’
SeeSaw | Another point of view

[email protected]

sembr aun problema di connessione al database, del resto non e’ un
problema nel adapter perche script\console funzione, dunque dovrebbe
essere un problema di enviroment.

Hai controllato sotto quale environment gira l’applicazione? Mi e’
capitato piu volte di avere una app che aveva problemi in un env e non
nell’altro e se utilizzi script\console il default e’ che parta come
enviroment development a meno di averlo impostato a livello di
variabili di ambiente.

ciao

Luca

Sto portando un’applicazione Rails in produzione e mi becco sto schifo di
errore:

Bad file descriptor - connect(2)
RAILS_ROOT: ./script/…/config/…

Application Trace | Framework Trace | Full Trace
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/vendor/mysql.rb:108:in
`initialize’

Come dice Luca, sicuramente un problema di collegamento DB… Che ci
sia un firewall o qualcosa del genere?

Il mio ambiente di sviluppo è : WinXP - Ruby 1.8.4 - Rails 1.1.6 - Webrick
1.3.1 - MySQL 5
L’ambiente di produzione è: Win2000 - Ruby 1.8.4 - Rails 1.1.6 - Mongrel
0.3.13.3 - MySQL 5

Yuck!

La cosa strana è che in prod ho provato a lanciare l’app anche con Webrick e
da lo stesso problema, quindi non è Mongrel che s’incazza.
In + se faccio script\console riesco ad interrogare correttamente gli
ActiveRecord, il che vuol dire che anche la connessione a DB funziona
correttamente (e l’ho verificato anche con MySQL query browser).

Questo, effettivamente, e` strano…

Veramente non so dove sbattere la testa… avete qualche idea?

Fosse sotto Linux, sarei partito con strace, magari c’e qualcosa di simile sotto windows? Se si, dovrei aggiungerlo a win4.leenooks.com


David N. Welton

Linux, Open Source Consulting

Perfetto !
Anche se non capisco perché funzioni con il console e non con Mongrel…
Forse i due ambienti caricano le librerie in un ordine diverso e hai
due librerie diverse per mysql…
Luca

Grazie per le risposte!

Io lancio tutte le applicazioni con RAILS_ENV=production quindi:

  • ruby sript\console production
  • ruby script\server RAILS_ENV=production
  • mongrel_rails start -e production

Ho visto in giro per le ML di rails che altri hanno avuto lo stesso
problema
ma nessuno aveva una risposta.
Per scrupolo ho reinstallato tutto con la stessa procedura su un Win2003
Server e… magia… funziona!

Quindi il problema è da ricercare in qualche incompatibilità tra gem nativi
e win2000 o tra ruby-one-click-installer-184-20 e win2000.

Diciamo che invece di risolvere il problema io ci ho girato intorno (che
pragmatico!) visto che ho a disposizione una macchina di produzione
Win2003.
Non credo che avrò voglia di indagare ulteriormente, ma se qualcuno si
dovesse trovare nella mia stessa situazione, sappia che può presentarsi sta
pegola.

PS: avevo anche provato ad installare RubyForApache che monta un
mysql.so in
Ruby come consigliato nel file database.yml ma senza esiti positivi :frowning:

Paolo

On 9/6/06, David W. [email protected] wrote:

/lib/active_record/vendor/mysql.rb:108:in

Linux, Open Source Consulting


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Paolo D.’
SeeSaw | Another point of view

[email protected]

Può essere, ma il bello è che io non ho installato librerie per MySQL…
nel senso che su Winz non devi nemmeno fare gem install mysql… è tutto
prepackaged…
veramente non mi spiego sta cosa…

On 9/6/06, Luca M. [email protected] wrote:

Io lancio tutte le applicazioni con RAILS_ENV=production quindi:
Quindi il problema è da ricercare in qualche incompatibilità tra gem

di
Come dice Luca, sicuramente un problema di collegamento DB… Che ci

Linux, Open Source Consulting
Paolo D.’
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Paolo D.’
SeeSaw | Another point of view

[email protected]