2013-06-26 40 views
0

在軌道架上的紅寶石可以訪問整個軌道環境嗎?

def call(env) 

方法由擊中任何URL調用的是,可我那個方法裏面做一些ActiveRecord的查詢,使用LIB定義等等,等等

類呢,還是更喜歡沒有導軌env加載的irb控制檯?另一種方式把它用耙子任務例如:

task :foo => :environment do 
    # with env 
    end 

task :foo2 do 
    # without env 
    end 

我想機架類不會得到環境,以便他們是超級快,不走正常的軌道請求的所有開銷。

但這似乎並非如此。我可以在機架類中進行ActiveRecord查詢。那麼機架的優勢是什麼呢?

+0

你應該有機會獲得積極的支持(和朋友)AFAIK。它是否工作,例如你可以創建模型的實例嗎? – rogerdpack

+0

是的,我似乎能夠做到一切。 –

回答

1

http://www.ruby-on-rails-outsourcing.com/articles/2010/05/28/how-to-create-your-own-rack-middleware-class-in-ruby-on-rails/看來,「env」是其機架「使用」它的請求的一部分,所以你無法繞過它(但我想你可以使用它來避免運行完整的鐵軌堆棧,如果你如此渴望)。

在導軌2中曾經有一個「金屬」選項,基本上可以避免所有負載。顯然它被移除了軌道3. http://tektastic.com/2010/07/rails3-rack-and-where-did-my-metal-go.html您必須改用機架中間件。我不確定這是否會導致性能差別很大(不得不使用機架)。