Showing posts tagged rails

rails generátor ütközés

Nem jó irány, hogy gemek saját generátort adnak ki a rails standard generátorai helyett, mint például az rspec_controller.

Most választanom kell, hogy vagy rspec, vagy facebooker által generálok kontrollert. Szeretném mind a kettőt egyszerre.

Rspec

Nem elsődleges feladata, hogy megmondja hol a hiba, hanem hogy minél biztosabban jelezze, ha hiba van a rendszerben.

A module és a class is konstans az adott névtérben

Mivel egy namespace-ben egy konstans csak egyszer szerepelhet, ezért nem lehet pl egy module-nak és egy class-nak is ugyan az a neve egyazon namespace-ben.

Erre érdemes ügyelni, amikor az ember csinál egy Client namespace-t a controller-ek között, de szeretne Client model-t is.

Migration futtatás bárhonnan

Ez egy mozgalmas nap.

Lehet migration-ből más migration-öket hivogatni. Ez akkor jó, ha mondjuk új mezőt akarsz hozzáadni, de elképzelhető, hogy nincs meg a tábla:

begin
add_column :egy_tablas, :mondjuk_mezo, :es_a_tipusa
rescue
require 'db/migrate/a_masik_migration'
AMasikMigration.migrate :up # vagy :down
retry # ide még kellhet ellenőrzés, hogy ne menjen végtelen
#ciklusba...
end

Valójában bárhol futtathatsz migration-t, tehát pl. console-ból is. Ha elszáll egy migration akkor bemész console-ba és kézzel migration-ön hivogatásokkal rendbe lehet rakni db reset nélkül.

Inteligens model file nevek

Érdemes megfigyelni, hogy a model generálás, akkor is felismeri a szóhatárokat, ha csupanagybetűs rövidítést tartalmaz az osztály neve.


balazs-vidas-macbook:dinaback bvida$ script/generate model --skip-migration FLVConverter exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/flv_converter.rb
create test/unit/flv_converter_test.rb
create test/fixtures/flv_converters.yml

RAILS_ENV beégetés

Felmerült az igény, hogy egy rails install tudja magáról, hogy melyik futási módban van (RAILS_ENV). Azért indokolt, mert egy rails telepítés jellemzően egy módban fut.

Felesleges többletbeállítás, hibaforrás, hogy minden rake task meghívásakor, szerver beállításban meg kell adni a környezeti változót.

A Rails 2.0.0 óta lehetőségünk van létrehozni a config/preinitializer.rb file-t, amiben beállítjuk az ENV‘RAILS_ENV’ változót.

ENV['RAILS_ENV'] = 'production'

Azért nem lehet simán az environment.rb-be beletenni, mert a rake taskok mire betöltik az environment.rb-t, addigra definiálják a RAILS_ENV konstanst, amit később nem szép átírni.

A preinitializer-ről bővebben:

http://dev.rubyonrails.org/changeset/8159