首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liquid view_paths错误

Liquid view_paths错误
EN

Stack Overflow用户
提问于 2010-08-10 04:25:04
回答 2查看 621关注 0票数 2

我正在尝试部署我的RoR应用程序。当RAILS_ENV被设置为开发时,它似乎在我的开发机器上工作得很好。但是,当我将它放在生产服务器上并将其设置为生产模式时,在导航到开始页后得到以下错误:

代码语言:javascript
复制
=> Booting Mongrel
=> Rails 2.3.8 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server


Processing PagesController#show (for 173.79.8.203 at 2010-08-09 20:17:21) [GET]
  Parameters: {"slug"=>[], "action"=>"show", "controller"=>"pages"}

NoMethodError (undefined method `view_paths' for #<Liquid::Template:0x7fc6f8b5f8a8>):




Processing ApplicationController#show (for 173.79.8.203 at 2010-08-09 20:17:21) [GET]
  Parameters: {"slug"=>[], "action"=>"show", "controller"=>"pages"}

NoMethodError (undefined method `view_paths' for #<Liquid::Template:0x7fc6f8b5f8a8>):


Rendering /home/flavorpulse/sites/public.flavorpulse.com/public/500.html (500 Internal Server Error)

奇怪的是,在我的开发环境中,我确实得到了类似的输出,但我没有被重定向到500.html。在我的dev机器上类似的输出是:

代码语言:javascript
复制
=> Booting Mongrel
=> Rails 2.3.8 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
  SQL (0.1ms)   SET NAMES 'utf8'
  SQL (0.1ms)   SET SQL_AUTO_IS_NULL=0


Processing PagesController#show (for 127.0.0.1 at 2010-08-09 16:07:50) [GET]
  Parameters: {"slug"=>[], "action"=>"show", "controller"=>"pages"}
  Domain Columns (1.4ms)   SHOW FIELDS FROM `domains`
  Domain Load (45.8ms)   SELECT * FROM `domains` WHERE (`domains`.`domain_name` = 'localhost') LIMIT 1
  Account Columns (1.6ms)   SHOW FIELDS FROM `accounts`
  Account Load (0.8ms)   SELECT * FROM `accounts` WHERE (`accounts`.`id` = 1) 
  CACHE (0.0ms)   SELECT * FROM `accounts` WHERE (`accounts`.`id` = 1) 
  Theme Columns (2.0ms)   SHOW FIELDS FROM `themes`
  Theme Load (0.8ms)   SELECT * FROM `themes` WHERE (`themes`.`id` = 1) 
  PageTemplate Columns (1.4ms)   SHOW FIELDS FROM `page_templates`
  PageTemplate Load (0.3ms)   SELECT * FROM `page_templates` WHERE (`page_templates`.`name` = 'index') AND (`page_templates`.theme_id = 1) LIMIT 1
  CACHE (0.0ms)   SELECT * FROM `domains` WHERE (`domains`.`domain_name` = 'localhost') LIMIT 1
  CACHE (0.0ms)   SELECT * FROM `accounts` WHERE (`accounts`.`id` = 1) 
  CACHE (0.0ms)   SELECT * FROM `accounts` WHERE (`accounts`.`id` = 1) 
  CACHE (0.0ms)   SELECT * FROM `themes` WHERE (`themes`.`id` = 1) 
  PageLayout Load (0.4ms)   SELECT * FROM `page_layouts` WHERE (`page_layouts`.theme_id = 1) LIMIT 1
  PageLayout Columns (1.4ms)   SHOW FIELDS FROM `page_layouts`
  CACHE (0.0ms)   SELECT * FROM `domains` WHERE (`domains`.`domain_name` = 'localhost') LIMIT 1
  CACHE (0.0ms)   SELECT * FROM `accounts` WHERE (`accounts`.`id` = 1) 
  CACHE (0.0ms)   SELECT * FROM `accounts` WHERE (`accounts`.`id` = 1) 
  Page Load (0.3ms)   SELECT * FROM `pages` WHERE (`pages`.`show_in_navigation` = 1) AND (`pages`.account_id = 1) 

NoMethodError (undefined method `view_paths' for #<Liquid::Template:0x10337ef98>):


Rendering rescues/layout (internal_server_error)

但是您可以看到主要的区别在于,在生产服务器上,看起来没有对数据库进行任何调用。

更新时间2010/08/09 @ 17:41 EST:

下面是我的控制器代码,它显示我没有对一个名为template的实例变量做任何事情:

代码语言:javascript
复制
class PagesController < ApplicationController
  def show
    if params[:slug].blank?
      # show homepage
      page = current_account.theme.page_templates.find_by_name("index")
    else
      # show the right page
      #TODO: This doesn't support slashes in the slug. This URL will make this barf: about/us/us/us/us/about-us.html
      page = Page.first(:conditions => ["account_id = :account_id AND slug = :slug", { :account_id =>  current_account.id, :slug => params[:slug] }])
    end

    if page.nil?
      #TODO: Render a better 404 page.
      content = "4oh4 - File Not Found"
    else
      content = page.content      
    end

    assigns = {
    }
    render_page(content, assigns)
  end
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-10 08:27:43

不要使用@template。使用这个(虽然性能可能很差...您可能需要在以后对其进行优化):

代码语言:javascript
复制
final_render = Liquid::Template.parse(page_layout)  # Parses and compiles the template
final = final_render.render(assigns)

render :text => final
票数 0
EN

Stack Overflow用户

发布于 2010-08-10 04:37:31

您所看到的只是Rails是如何配置为在开发和生产环境中表现不同的。您的主要区别是:

  • 默认生产日志级别不显示数据库访问,尽管它们几乎肯定会发生
  • In production,您会被重定向至500通知。在开发中,您经常会看到堆栈跟踪,即

在这两种情况下都会出现您遇到的错误。不要因为它在开发中看起来不那么严重就认为它不是一个问题。

类似的问题也发布在here上。也许这就是你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3443876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档