【问题标题】:Undefined method `sub' while running rake assets:precompile on Windows运行 rake 资产时未定义的方法“sub”:在 Windows 上预编译
【发布时间】:2013-02-04 08:56:30
【问题描述】:

当我尝试运行 rake assets:precompile 时,我遇到了一个似乎与我的 database.yml 相关的奇怪问题。但是,直接访问该网站可以正常工作(如果我将环境更改为使用资产管道)。

Rails 3.2.12、ruby 1.9.3p385、Windows Server 2008。

我的 database.yml 文件(主机、用户名和密码已删除):

生产: 适配器:mysql2 编码:utf8 重新连接:真 数据库:图像 游泳池:5 用户名:用户名 密码:密码 主持人:主持人

错误顶部的sn-p:

D:\inetpub\wwwroot\images>rake assets:precompile C:/Ruby19/bin/ruby.exe C:/Ruby19/bin/rake assets:precompile:all RAILS_ENV=assets:precompile RAILS_GROUPS=assets 耙中止! nil:NilClass 的未定义方法“sub” D:/inetpub/wwwroot/images/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_specification.rb:68:in `co nnection_url_to_hash' D:/inetpub/wwwroot/images/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_specification.rb:36:in `bl 锁定 resolve_string_connection' D:/inetpub/wwwroot/images/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_specification.rb:35:in `fe 切'

编辑:

这里是connection_specification.rb的内容,它在这一行被炸掉了::database => config.path.sub(%r{^/},""),:

def connection_url_to_hash(url) # :nodoc: config = URI.parse 网址 适配器 = config.scheme 适配器 = “postgresql” 如果适配器 == “postgres” 规格 = { :适配器 => 适配器, :username => config.user, :password => config.password, :port => config.port, :database => config.path.sub(%r{^/},""), :host => config.host } spec.reject!{ |_,value|值.空白? } spec.map { |键,值| spec[key] = URI.unescape(value) if value.is_a?(String) } 如果 config.query options = Hash[config.query.split("&").map{ |pair| pair.split("=") }].symbolize_keys 规范合并!(选项) 结尾 规格 结尾 结尾 结尾

【问题讨论】:

    标签: ruby-on-rails ruby asset-pipeline rails-activerecord


    【解决方案1】:

    您的输出会生成以下内容: RAILS_ENV=assets:预编译

    但是我认为您没有声明资产环境。

    试试$:. rake assets:precompile RAILS_ENV='production' RAILS_GROUPS='assets'

    PS:Windows 是.. 假设在 Rails 支持方面尚未开发,因此您可能需要考虑切换到另一个操作系统。我个人最喜欢的是 Debian sqeeze

    【讨论】:

    • 哦,我知道,我是一个 linux 人,但我们在公司的 windows 环境中,我还没有设法说服他们给我一个 linux 服务器。我们实际上已经在 Windows 环境中部署了一个 Rails 应用程序,它没有任何问题。感谢您的帮助!
    • 它表现得好像要工作一样,然后在大约 3 分钟后就被炸毁了。回到原点。同样的错误,但没有第二行。
    • 好吧,正如错误表明在 NilClass 上调用 sub 你确定在:config.path.sub(%r{^/},"") config.path 已设置?
    • dennis,请参阅上面的 YML 文件。我已经确认它已正确加载。如果我在数据库名称的末尾放置一个“/”,我会收到一个关于无效数据库的错误,所以它肯定存在。出事了……
    • 我认为你误解了正在发生的事情,因为 sub 在 NilClass 上被调用,所以 config.path 没有任何价值。你可能想使用 pry gem 来找出哪个值它在运行时持有
    猜你喜欢
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多