【问题标题】:Rails Lib files loading errorRails Lib 文件加载错误
【发布时间】:2010-12-10 16:07:38
【问题描述】:

在我的项目中,我使用了一些自定义液体标签,并在我的“lib”目录中创建了一个名为“Liquid”的文件夹,在那里我有一个名为 helpers 的液体模块,

module  Liquid::Helpers

end

所以项目树如下

--> lib 

      --> Liquid

我正在尝试在我的 environment.rb 文件中注册我的标签

Liquid::Template.register_filter(Liquid::Helpers)

要在服务器启动时加载我的 lib 文件,我在 application.rb 中尝试这样做

config.autoload_paths <<  File.join(Rails.root.to_s, "lib")

但我收到以下错误

': 未初始化的常量 Liquid::Helpers (NameError)

我在这里缺少什么,有人可以帮助我吗,在此先感谢

干杯

同人

更新 -

我在 Rails3 上使用 Ubuntu。以下是我的完整错误代码

`<top (required)>': uninitialized constant Liquid::Helpers (NameError)
    from <project path>/config.ru:3:in `require'
    from <project path>/config.ru:3:in `block in <main>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/builder.rb:46:in `instance_eval'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/builder.rb:46:in `initialize'
    from <project path>/config.ru:1:in `new'
    from <project path>/config.ru:1:in `<main>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/builder.rb:35:in `eval'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/builder.rb:35:in `parse_file'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/server.rb:162:in `app'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/server.rb:248:in `wrapped_app'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/server.rb:213:in `start'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands/server.rb:65:in `start'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands.rb:30:in `block in <top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands.rb:27:in `tap'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands.rb:27:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

【问题讨论】:

    标签: file ruby-on-rails-3 liquid


    【解决方案1】:

    我的水平还不够高,无法提出澄清问题,但我的第一条建议是通过以下方式澄清您的问题(考虑在任何地方发布任何问题的可靠建议):

    • 列出您正在使用的 rails、liquid、gems、ruby 等版本(尤其是 rails 版本)

    • 复制并粘贴出现错误消息的终端的整个输出。虽然您可能不理解该输出,但对其他人调试您的情况很有用。从终端复制粘贴(包括您运行的命令)留下零问题

    • 为您的文件结构提供更好的信息。终端复制粘贴再次完美。从您的 Rails 根目录,您可以运行命令 find lib(除非您在 Windows 上,在这种情况下您不能使用 find 并且是时候考虑切换到 OSX 或 ubuntu)。

    这是一个包含所有信息的终端复制粘贴示例:

    dhcp-c-200:foo luke$ rails -v && gem -v && ruby -v && gem list | grep liquid
    Rails 2.3.5
    1.3.5
    ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
    dhcp-c-200:foo luke$ find lib
    lib
    lib/Liquid
    lib/Liquid/some_module_file.rb
    lib/tasks
    dhcp-c-200:foo luke$ script/server
    => Booting Mongrel
    => Rails 2.3.5 application starting on http://0.0.0.0:3000
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:440:in `load_missing_constant': uninitialized constant Liquid::Template (NameError)
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:80:in `const_missing'
        from /Users/luke/Sites/foo/config/environment.rb:43
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:521:in `new_constants_in'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/server.rb:84
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from script/server:3
    dhcp-c-200:foo luke$ cat lib/Liquid/some_module_file.rb 
    module Liquid
    
    end
    
    module Liquid::Foo
    
    enddhcp-c-200:foo luke$ 
    

    ...一个终端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 2013-10-06
      • 2011-03-12
      • 2020-11-06
      • 1970-01-01
      相关资源
      最近更新 更多