2012-10-08 34 views
0

我已經在我的機器上工作得很好,但我的生產服務器上它採用了損壞的鏈接服務的圖像的應用程序使用回形針寶石服務。設置系統目錄Rails的生產環境

生產環境的Linux(Debian的),阿帕奇,客我與Capistrano的部署。

的應用程序存儲在(指向當前版本的應用程序的使用Capistrano的部署公共文件夾中的符號鏈接):

/var/www/apps/root/appname 

然而,當我嘗試訪問它在生產服務器上,以此爲路徑是尋找在Apache的錯誤日誌顯示:

/var/www/apps/root/system 

正確的路徑,卻是:

/var/www/apps/appname/shared/system 
提供給我

一種選擇是建立在根符號鏈接引導系統到正確的道路,但我不希望這樣做的情況下,我想部署在同一個根目錄的另一個應用程序。

由導軌產生該請求的URL,但Apache是​​怎樣獲取的靜態資源(圖像文件),所以我試圖把我的config /環境/ production.rb如下:

ENV["RAILS_RELATIVE_URL_ROOT"] = '/appname/' 

它已經解決了我所遇到的所有其他路徑問題,但是當rails生成url(通過Paperclip gem)時,它似乎沒有使用它。

如何設置它,以便回形針使用正確的路徑,並只使用它的生產?

+0

我發現這個資源的[設置回形針的默認] (https://github.com/thoughtbot/paperclip#defaults),但我無法理解該示例或如何將其應用於我的情況。 –

回答

1

香港專業教育學院解決辦法,將其添加爲初始化的一個 配置/初始化/ paperclip.rb

Paperclip::Attachment.class_eval do 

    def url(style_name = default_style, options = {}) 
    if options == true || options == false # Backwards compatibility. 
     res = @url_generator.for(style_name, default_options.merge(:timestamp => options)) 
    else 
     res = @url_generator.for(style_name, default_options.merge(options)) 
    end 
    # replace adding uri before res, minus final/
    Rails.application.config.site_relative_url[0..-2]+res 
    end 

end