2012-10-22 34 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