gpt4 book ai didi

ruby-on-rails-3 - "uninitialized constant Encoding"使用 rvm、ruby 1.9.2、 bundler 和乘客

转载 作者:行者123 更新时间:2023-12-03 17:58:52 24 4
gpt4 key购买 nike

我在这里束手无策,正在向大家寻求有关此 f*#$^ 编码问题的帮助。

我在 Dreamhost 上具有 root 权限的私有(private)服务器上运行。这是关于我的环境和版本的一些信息。

$ `which ruby` -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
$ `which bundle` -v
Bundler version 1.0.15
$ `which rails` -v
Rails 3.0.9

除了这个错误,我的 rails 应用程序运行良好,没有问题。但是,当我尝试使用 encode 更改字符串的编码时方法它:
NoMethodError: undefined method `encode' for "foobar":String
encode should be定义但不是! Encoding如果我尝试 irb 会发现:
$ irb
ruby-1.9.2-p180 :001 > Encoding
=> Encoding
ruby-1.9.2-p180 :002 > "foobar".encode('utf-8')
=> "foobar"

但是如果我尝试通过 bundle exec 使用 rails 控制台, Encoding未找到:
$ bundle exec rails c staging
Loading staging environment (Rails 3.0.9)
ruby-1.9.2-p180 :001 > Encoding
NameError: uninitialized constant Encoding
from /[REDACTED]/shared/bundle/ruby/1.8/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in `const_missing'
from (irb):1
ruby-1.9.2-p180 :002 > "foobar".encode('utf-8')
NoMethodError: undefined method `encode' for "foobar":String

显然,设置没有正确加载某些内容,但我不确定在哪里可以找到它。我在这里想念什么?

2011 年 6 月 19 日更新

正如 Ryan Bigg 所指出的,奇怪的是 gems 的目录路径是 1.8。 .但是,运行 bundle exec表明 bundler 正在使用正确的 ruby​​ 和 rails 版本:
$ bundle exec which ruby
/path/to/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
$ bundle exec `which ruby` -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
$ bundle exec which rails
/path/to/shared/bundle/ruby/1.8/bin/rails
$ bundle exec `which rails` -v
Rails 3.0.9

很明显这里有些不正常……我只是不知道是什么。

2011 年 6 月 26 日更新

Seamus 要求 $LOAD_PATH

2011 年 6 月 26 日更新(稍后)

Seamus 要求 Gemfile.lockpp ENV …在 ENV输出,我发现 GEM_PATH不正确。在我的 staging.rb环境文件,我有:
GEM_HOME = "/home/[REDACTED]/.rvm/gems/ruby-1.9.2-p180@[REDACTED]"
GEM_PATH = "/home/[REDACTED]/.rvm/gems/ruby-1.9.2-p180@[REDACTED]:/home/[REDACTED]/.rvm/gems/ruby-1.9.2-p180@global"

……这显然没有得到尊重。我的代码中没有其他地方提到 GEM_HOMEGEM_PATH
2011 年 6 月 27 日更新

Seamus 要求 .bundle/config 内容…

最佳答案

更新 相同的想法(GEM_HOME 搞砸了),但更多建议

您的 GEM_HOME搞砸了,可能是因为你的 PATH 搞砸了。您可以尝试设置以下环境变量 在你的外壳里

$ export PATH=[your current path but with rvm's ruby 1.9 at the front]

然后运行
$ bundle install

如果这不起作用,请尝试在您的 shell 中设置它
$ export GEM_HOME=[your ruby 1.9 gem home]

然后重新运行
$ bundle install

这个答案的新想法: Using RVM, bundler does not install in proper gemset when gems are installed in a different ruby version

关于ruby-on-rails-3 - "uninitialized constant Encoding"使用 rvm、ruby 1.9.2、 bundler 和乘客,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com