Poziom: 0 | Kategoria: Komputerowo-internetowo, Ruby, Ruby on Rails, Techblog.
Pracując ostatnio nad projektem zauważyłem dziwne rzeczy dziejące się w aplikacji. Po pierwsze w trybie deweloperskim po jakimkolwiek błędzie nie wyświetlał się stack trace. Jedyne, co się wyświetlało, to error code 500.
Już sam ten fakt był dla mnie dość uciążliwy, chociaż w tym przypadku zawsze można było odwołać się do logów aplikacji. Dużo gorszą rzeczą było nadpisanie przez coś wartości stałej RAILS_ENV i ustawienie jej na 'test'. Co ciekawe, wartość ENV['RAILS_ENV'] nadal wskazywała na poprawne środowisko.
Kiedy po zainstalowaniu RPM aplikacja nie chciała z nim współpracować (oczywiście działo się tak przez źle wskazujące RAILS_ENV) trzeba było znaleźć winnego. Po nitce do kłębka znalazłem wpis dotyczący znikających stack trace'ów. Okazało się, że wycięcie z pliku config/environment.rb linijki:
config.gem 'rspec-rails', :lib => 'spec/rails'
rozwiązało oba problemy!
Winowajcą jest linijka
silence_warnings { RAILS_ENV = "test" }
w pliku lib/spec/rails.rb gema rspec-rails.
Powyższy problem zdaje się nie występować w przypadku korzystania z rspeca w formie pluginu.
Takie bugi w libach potrafią zniechęcić by je dalej używać... Zgłosiłem ten błąd developerom rspeca?
16 stycznia 2009 o 21:24:12Zglosiłem, czy zgłosiłeś? :) Ja nie zgłaszałem, bo ticket już jest – http://rspec.lighthouseapp.com/projects/5645/tickets/584-adding-rspec-rails-forces-default-environment-to-test
16 stycznia 2009 o 23:41:42No i błąd został już naprawiony
19 stycznia 2009 o 14:00:30