rails jednak nie agile
Otworzyłem przykład z książki. Aplikacja do edycji produktów. I jade krok po kroku. No i nie działa. Utknąłem na generacji kodu modelu danych. Jedyną różnica była użyta przeze mnie baza danych. Użyłem PostgreSQ zamiast MySQL.
laptok$ ruby script/generate scaffold -t -f Product Admin
exists app/controllers/
exists app/helpers/
exists app/views/admin
exists test/functional/
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
identical app/models/product.rb
identical test/unit/product_test.rb
identical test/fixtures/products.yml
error Before updating scaffolding from new DB schema, try creating a table for your model (Product)
Pogooglałem i zasugerowałem się jakimś wpisem na forum, że byc może to kwestia starych bibliotek. Aktualizacja czasem pomaga. Niestety w Debianie nie ma gem, taki taki instalator pakietów z rubym. Zatem instaluje ze źródeł RubyGems
ruby setup.rb gem install rubygems-update gem install rails --include-dependencies
Potem przyszła pora na przelotkę do biblioteki Postgresa
apt-get install libpq-dev postgresql-dev ruby1.8-dev gem install postgres -- --with-pgsql-include-dir=/usr/include/postgresql/
No i nadal nie działa.
W akcie desperacji spojrzałem do logów bazy. A tam jak wół napisane, iż railsy poszukują tabelki products (sic!). Nie wiem co to za konwencja nazywania tabelek w bazie w liczbie mnogiej. Sie pierwszy raz z nią spotkałem. Przekartkowałem książke i dalej jest ta konwencja zachowana. Cóż trzeba będzie się przyzwyczaić, albo poszukać wajchy by to wyłączyć.
Zobaczymy co będzie dalej.
Aktualizacja
Jednak jest wajha W pliku config/environment.rb trzeba dodać:
ActiveRecord::Base.pluralize_table_names = false;
I już można oprogramowywać zastane bazy. Ruby jednak jest “agile”
Prosze nie straszyc.
Używam pgsql. A z UTF8 to wiem, że nie ma wsparcia.
Cóż, może w common lispie (SBCL) trzeba będzie programować.