domenica 16 ottobre 2011

MAC OSX Lion, problemi con Mysql da Ruby

Con riferimento al post del 3 aprile 2011, probabilmente dopo l'aggiornamento di Snow leopard a Lion, una serie di problemi tra Mysql e Ruby si sono ripresentati, questa volta in un'altra forma.

  Status: 500 Internal Server Error
  uninitialized constant MysqlCompat::MysqlRes

    /Library/Ruby/Gems/1.8/gems/activesupport-2.3.11/lib/active_support/dependencies.rb:466:in `load_missing_constant'
    /Library/Ruby/Gems/1.8/gems/activesupport-2.3.11/lib/active_support/dependencies.rb:106:in `const_missing'
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/mysql_adapter.rb:9:in `define_all_hashes_method!'
    /Library/Ruby/Gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/mysql_adapter.rb:68:in `mysql_connection'
per poter risolvere il problema ho lanciato i comandi (simile a quello del post precedente) :
sudo gem uninstall mysql
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

malgrado questi un'ulteriore errore e' apparso :

  dlopen(/Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
  Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
    /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require'
    /Library/Ruby/Gems/1.8/gems/activesupport-2.3.11/lib/active_support/dependencies.rb:182:in `require'
per risolvere questo problema e' stato necessario lanciare :

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.7/mysql.bundle

con questi passi il problema e' stato risolto.

domenica 3 aprile 2011

MAC OSX problemi con Mysql

Nel processo di spostamento da applicazioni sviluppate su Windows per portarle su MAC OSX, mi sono imbattuto nel ripristinare il funzionamento di varie applicazioni sviluppate in Ruby on Rails con Mysql.

Il primo problema che ho incontrato che non e' presente la Gem di Mysql, quindi il primo punto e' stato eseguire il "gem install" che pero' occorre lanciarlo in una particolare modalita'
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
a questo punto cercando di lanciare i comandi rake per la creazione del DB (rake db:create:all, rake db:migrate, rake db:seed etc..) incorrevo nell'errore :
uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)
Questo problema e' risolvibile aggiungendo sul file boot.rb il require :
require 'thread'
non volevo pero' aggiungere un comando su un file che in teoria non andrebbe cambiato, quindi ho cercato altre soluzioni.
Ho aggiornato la gem rails da 2.3.5 a 2.3.11, tramite :
gem install rails -v 2.3.11
Cambiato il file environment.rb per utilizzare tale versione e aggiornata l'applicazione tramite :
rake rails:update
Malgrado questo il modulo mysql non funziona ancora e' stato necessario impostare una variabile di ambiente tramite :
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib 


a questo punto tutto funziona, ricevo un NOTE di qualcosa che e' diventato deprecato ma tutto funziona.

SourceIndex.new(hash) is deprecated; From /Library/Ruby/Gems/1.8/gems/rails-2.3.11/lib/rails/vendor_gem_source_index.rb:100:in `new'.

MAC OSX Beyond Compare

Mi capita spesso di utilizzare Beyond Compare su Windows per comparare strutture di Directory, adesso su MAC OSX ero alla ricerca di qualcosa di simile.

Il miglior prodotto gratuito che ho trovato e' : Diffmerge

Scaricabile all'indirizzo :  http://www.sourcegear.com/diffmerge

venerdì 1 aprile 2011

Mac OSX Apache - Forbidden su nuove pagine e risorse

Da poco tempo mi sono avvicinato al mondo Mac OSX, e sono alle prese con il "travasare" : documenti, siti e applicazioni sviluppate e create in ambiente Windows su ambiente Mac.

Spostando i vari siti sull'Apache gia' presente su Snow Leopard, al momento dell'apertura ricevevo un "Forbidden".

Su Internet la soluzione prevalente per la risoluzione del problema e' quella di cambiare httpd.conf per disabilitare il deny from all dalla direttiva .

Siccome non volevo modificare un impostazione di generale del server apache, ma volevo agire solo sulla parte lato utente (quindi sulla Root page che insiste su : "/Users//Sites"), ho risolto cambiando le impostazioni di sicurezza dei file da "-rwx------" a "-rwxr-xr-x" tramite il comando :

chmod -R uo+rx *

domenica 21 marzo 2010

Javadoc - plsqldoc

Una cosa delle molte cose su cui Java ha lasciato il segno e' la standardizzazione del modo di gestire la documentazione di utilizzo delle varie classi / interfacce e dei loro metodi, tramite Javadoc.

Molti altri linguaggi hanno adottato un approccio simile, anche Ruby ha il suo RDoc.

Anche per chi programma in Oracle Plsql, puo' appoggiarsi ad un tool che leggendo direttamente le informazioni su DB costruisce le API Reference.

Ci sono principalmente due progetti su questo argomento :
1) http://sourceforge.net/projects/plsqlutils/
2) http://pldoc.sourceforge.net/

Sono tutti e due progetti di qualche anno fa che non hanno avuto una loro evoluzione, anche se il primo sembra piu' "ufficiale", sul quale si appoggia anche un altro progetto "OraDoc", a mio avviso e' il secondo "pldoc" che risulta piu' immediato e maneggevole.
Una volta scaricato e' sufficiente eseguire il batch pldoc.bat (pldoc.sh) indicando il db e i package da leggere e sul percorso corrente (o specificato tramite -d) verranno creati i file html in puro stile Javadoc.
Un esempio di esecuzione e' :
  • pldoc.bat -doctitle testPLSQLDOC -d myfolder -url jdbc:oracle:thin:@mydbmachine:1521:mydbsid -user userx -password userxpassword -sql USERX.MYPACKAGE1,USERX.MYPACKAGE2
Attenzione : ad indicare sul parametro -sql l'utente/schema in maiuscolo altrimenti verra' rilanciato un errore di pacchetto non trovato.

La scrittura della documentazione deve essere fatta nello Spec del package e non nel body.

Se non si hanno troppe pretese, il tool funziona efficaciemente non possiede funzionalita' avanzate, come la possibilita' di trasferire via FTP la documentazione o un interfaccia GUI di gestione etc.. , ma se ne puo' fare tranquillamente a meno.

lunedì 8 marzo 2010

Rails - Controller Routing in Subdirectory

Al fine di razionalizzare e aggregare funzioni specifiche puo' essere utile far rispondere un determinato controller ad un webpath nidificato rispetto a quello normale.
Per fare questo e' sufficiente ci sono una serie di passi da effettuare :
  • creare un controller in subfolder della dir. controller (se desiderate tramite script/generate subfolder/controller, es. ruby script/generate admin/users ).
  • creare le view in un subfolder con lo stesso nome del subfolder.
  • se desiderate potete modificare il routing in routes.rb in modo da puntare la richiesta al nuovo percorso, tramite :
    map.connect 'subfolder/controller/:action/:id', :controller => 'subfolder/controller' o tramite il map.namespace.
Se siamo in presenza di un application layout o in ogni caso in cui occorra puntare al controller corretto indicare nel reference :controller :
  • "subfolder/controller" se si desidera puntare al controller nidificato.
  • "/controller" se si desidera puntare al controller in posizione root.

Utility - GIMP - dbp

Durante la costruzione di siti vetrina, capita di dover eseguire una serie di operazioni (ridimensionamento per i thumbnails, renaming, crop etc..),  su una grossa mole di immagini, per evitare di farne una ad una, esiste un plugin GIMP che viene in soccorso :

http://members.ozemail.com.au/~hodsond/dbp.html

L'interfaccia e' abbastanza spartana, ma efficace nel funzionamento.