没有将哈希隐式转换为字符串

时间:2015-09-03 09:48:53

标签: bundler ruby-on-rails-4.1 ruby-2.1

application.yml文件将配置包含为:

test:
  STRIPE_API_KEY: sk_test_5USsmmhNqERIQhEQ1ZifD
  STRIPE_PUBLIC_KEY: pk_test_JE8p4qWciPqYnJZKjlKH8  

和application.rb包含代码:

require File.expand_path('../boot', __FILE__)
require 'rails/all'
Bundler.require(*Rails.groups)
module AppName
  class Application < Rails::Application
    config.autoload_paths += %W(#{config.root}/lib)
    config.before_configuration do
    env_file = File.join(Rails.root, 'config', 'application.yml')
    YAML.load(File.open(env_file)).each do |key, value|
      ENV[key.to_s] = value
    end if File.exists?(env_file)
  end
 end
end  
当我点击rake时,当我运行rails指定的以下命令时,我遇到了问题:
    bundle config --delete bin
    rake rails:update:bin

现在,当我'耙'时,我得到错误 - “application.rb:28:in`[] =':没有将Hash隐式转换为String(TypeError)”这是行'ENV [key.to_s YAML.load块中的'= value' 1)首先我运行'bundle config --delete bin'。 (为什么要这样做) 2)然后我评论application.rb中的before_configuration块以防止上述错误并运行cmd“rake rails:update:bin” - 希望这个命令在没有上述错误的情况下运行,现在命令是通过注释成功完成的这一点和bin目录中的更新文件 3)然后我取消注释代码 - 现在任何rake或rails cmd都会给出上面提到的错误。

Bundler版本1.6.2,rails版本4.1.4,ruby版本2.1.2p95。

此外,在此问题出现之前,我曾忽略以下消息:

您的应用程序的./bin/rails看起来像是由Bundler生成的存根。

在Rails 4中,您的应用程序的bin /目录包含版本化的可执行文件 像任何其他源代码一样,而不是按需生成的存根。

以下是升级方法:

bundle config --delete bin    # Turn off Bundler's stub generator
rake rails:update:bin         # Use the new Rails 4 executables
git add bin                   # Add bin/ to source control  

在此之前,应用程序运行良好。这个消息实际上是什么?明确的解释将非常感激。

0 个答案:

没有答案