2012-10-22 32 views
1

我剛開始使用JBuilder,並且它在開發模式下本地成功工作。Rails在生產中缺少JBuilder hander/template

我剛推送到我的Nginx/Unicorn服務器,每當我嘗試查看使用JBuilder json的url時,我得到一個Template is Missing錯誤,並且在處理程序列表中沒有JBuilder?

模板丟失

缺少模板client_events/all_client_events_for_client,應用/使用{all_client_events_for_client:區域設置=> [:EN]:格式=> [:HTML,:文本,:JS,:CSS, :ics,:csv,:png,:jpeg,:gif,:bmp,:tiff,:mpeg,:xml,:rss,:atom,:yaml,:multipart_form,:url_encoded_form,:json,:pdf,:zip ],:handlers => [:erb,:builder,:slim,:haml]}。搜索:*「/ home/deployer/apps/bigfor-blue/releases/20121022093934/app/views」

它完全在本地工作,但由於某種原因,它不會在我嘗試在生產環境中運行時達成一致。

任何想法都會很棒。

乾杯

UPDATE:

Development.rb

BigforBlue::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 

    # In the development environment your application's code is reloaded on 
    # every request. This slows down response time but is perfect for development 
    # since you don't have to restart the web server when you make code changes. 
    config.cache_classes = false 

    # Log error messages when you accidentally call methods on nil. 
    config.whiny_nils = true 

    # Show full error reports and disable caching 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

    # Print deprecation notices to the Rails logger 
    config.active_support.deprecation = :log 

    # Only use best-standards-support built into browsers 
    config.action_dispatch.best_standards_support = :builtin 

    # Raise exception on mass assignment protection for Active Record models 
    config.active_record.mass_assignment_sanitizer = :strict 

    # Log the query plan for queries taking more than this (works 
    # with SQLite, MySQL, and PostgreSQL) 
    config.active_record.auto_explain_threshold_in_seconds = 0.5 

    # Do not compress assets 
    config.assets.compress = false 

    # Expands the lines which load the assets 
    config.assets.debug = true 


    # MAILER 

    # Don't care if the mailer can't send 
    config.action_mailer.raise_delivery_errors = true 

    config.action_mailer.delivery_method = :smtp 

    config.action_mailer.default_url_options = { :host => "localhost:3000" } 
    ActionMailer::Base.smtp_settings = { 
     :address => "smtp.gmail.com", 
     :port => 587, 
     :authentication => :plain, 
     :user_name => "**** TAKEN OUT ****", 
     :password => "**** TAKEN OUT ****", 
     :openssl_verify_mode => "none" 
    } 

    end 

Production.rb

BigforBlue::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 

    # Code is not reloaded between requests 
    config.cache_classes = true 

    # Full error reports are disabled and caching is turned on 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = true 

    # Disable Rails's static asset server (Apache or nginx will already do this) 
    config.serve_static_assets = false 

    # Compress JavaScripts and CSS 
    config.assets.compress = true 

    # Don't fallback to assets pipeline if a precompiled asset is missed 
    config.assets.compile = false 

    # Generate digests for assets URLs 
    config.assets.digest = true 

    # Defaults to nil and saved in location specified by config.assets.prefix 
    # config.assets.manifest = YOUR_PATH 

    # Specifies the header that your server uses for sending files 
    # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
    # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 
    # config.force_ssl = true 

    # See everything in the log (default is :info) 
    # config.log_level = :debug 

    # Prepend all log lines with the following tags 
    # config.log_tags = [ :subdomain, :uuid ] 

    # Use a different logger for distributed setups 
    # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) 

    # Use a different cache store in production 
    # config.cache_store = :mem_cache_store 

    # Enable serving of images, stylesheets, and JavaScripts from an asset server 
    # config.action_controller.asset_host = "http://assets.example.com" 

    # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 
    # config.assets.precompile += %w(search.js) 

    # Disable delivery errors, bad email addresses will be ignored 
    # config.action_mailer.raise_delivery_errors = false 

    # Enable threaded mode 
    # config.threadsafe! 

    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 
    # the I18n.default_locale when a translation can not be found) 
    config.i18n.fallbacks = true 

    # Send deprecation notices to registered listeners 
    config.active_support.deprecation = :notify 

    # Log the query plan for queries taking more than this (works 
    # with SQLite, MySQL, and PostgreSQL) 
    # config.active_record.auto_explain_threshold_in_seconds = 0.5 

    # MAILER 
    # config.action_mailer.default_url_options = { :host => "http://*** TAKEN OUT ***" } 

    end 

UPDATE 2

我從我的設置中刪除了JBuilder,並將其替換爲RABL,並且仍然存在缺少模板和丟失處理程序的相同問題。

所以它看起來不是Jbuilder/RABL錯誤,但更像是一個獨角獸/ Nginx錯誤。

+0

您是否在生產中捆綁了'jbuilder' gem? –

+0

據我所知?當我在服務器上進行「捆綁安裝」時,JBuilder會出現在列表中?它也在我的Gemfile的主要部分。 – jonobattle

+0

你可以編輯你的文章,並從config/environments插入你的development.rb和production.rb文件嗎? –

回答

1

到底這個問題看起來好像是無論是在配置還是在初始Capistrano的過程中造成的「上限部署:安裝」或「帽部署:冷」

我最終刪除從我的服務器應用程序和執行一個新的'cap deploy:setup'和'cap deploy:cold',它解決了問題,JBuilder按預期工作。

不知道是什麼導致了這個問題,因爲Capistrano配方在第一個錯誤部署和第二個工作部署之間沒有變化。

所以我的建議,如果你遇到這樣的問題,你的應用程序的完全重新部署可能是一個選擇。

JB