Gem 报错:Could not find fastercsv-1.5.5 in any of the sources

mrrocket · 2020年12月14日 · 最后由 mrrocket 回复于 2020年12月17日 · 486 次阅读

大家好,我在 gemfile 添加 gem‘fasercsv’后执行 bundle install,显示已经安装成功了

xxx@xxxxx:/opt/redmine-4.1.1-0/apps/redmine/htdocs$ bundle config unset deployment
xxx@xxxx:/opt/redmine-4.1.1-0/apps/redmine/htdocs$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
.......
Using csv 3.1.2
Fetching fastercsv 1.5.5
Installing fastercsv 1.5.5
Using htmlentities 4.3.4
........

在 htdocs/vendor/bundle 中也有了这个包

但是 gem list 查看却查看不到

xxx@xxxxxx:/opt/redmine-4.1.1-0/apps/redmine/htdocs$ gem list

*** LOCAL GEMS ***
......
capybara (3.25.0)
childprocess (3.0.0)
cmath (default: 1.0.0)
coderay (1.1.3)
concurrent-ruby (1.1.6)
crass (1.0.6)
css_parser (1.7.1)
csv (3.1.2, default: 3.0.9)
date (default: 2.0.0)
dbm (default: 1.0.0)
debase (0.2.4.1)
debase-ruby_core_source (0.10.11)
did_you_mean (1.3.0)
docile (1.3.2)
e2mmap (default: 0.1.0)
erubi (1.9.0)
etc (default: 1.0.1)
executable-hooks (1.6.0)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.1.0)
forwardable (default: 1.2.0)
gdbm (default: 2.0.0)
gem-wrappers (1.4.0)
globalid (0.4.2)
htmlentities (4.3.4)
i18n (1.8.2, 1.6.0)
io-console (default: 0.4.7)
......

访问后,apache2/logs/error.log 报错

App 29373 output: Unknown ruby interpreter version (do not know how to handle): >=2.3.0,<2.7.0ifBundler::VERSION>=1.12.0.
App 29373 output: Error: The application encountered the following error: Could not find fastercsv-1.5.5 in any of the sources (Bundler::GemNotFound)
App 29373 output:     /opt/redmine-4.1.1-0/ruby/lib/ruby/gems/2.5.0/gems/bundler-2.1.2/lib/bundler/spec_set.rb:86:in `block in materialize'
App 29373 output:     /opt/redmine-4.1.1-0/ruby/lib/ruby/gems/2.5.0/gems/bundler-2.1.2/lib/bundler/spec_set.rb:80:in `map!'
App 29373 output:     /opt/redmine-4.1.1-0/ruby/lib/ruby/gems/2.5.0/gems/bundler-2.1.2/lib/bundler/spec_set.rb:80:in `materialize'

我的环境是集成环境,passenger:

ruby: ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

rails: Rails 5.2.4.2

接触 rails 时间不长,stackoverflow 上的答案都试过了,网上查找了一天也没找到好的解决方案。请问各位这是什么原因,我该怎么处理?

你用 bundle 安装的 gem,应该有 bundle list 查看 bundler 安装的 gem 列表。 然手你是用手动模式 bundle install 的话,应该需要重启下你的 rails 服务试试。

crosspass 回复

感谢回复

bundle list 是有 fastercsv

gem list 里面没有

我的是 passenger,重启服务器后还是一样的报错

mrrocket 回复

看报错的路径是, /opt/redmine-4.1.1-0/ruby/lib/ruby/gems/2.5.0

你 apache 使用的 ruby 2.5.0, 你安装 fastercsv gem 在 2.6.0 目录下面了。

可以使用 rbenv 来控制生产环境使用的 ruby 版本

crosspass 回复

不好意思,我是第一次用 rails,我尝试了 rbenv,提示没有 2.6.6,信息如下

/htdocs$ rbenv version
system

/htdocs$ rbenv install --list
2.5.8
2.6.6
2.7.2
jruby-9.2.14.0
mruby-2.1.2
rbx-5.0
truffleruby-20.3.0
truffleruby+graalvm-20.3.0

/htdocs$ rbenv shell 2.6.6
rbenv: version `2.6.6' not installed

我的 ruby 版本是 ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

那个路径是 vendor/bundle/ruby/2.5.0 和 bundle/ruby/2.6.0,这里的 2.5.0 和 2.6.0 是 ruby 版本吗,我的 ruby 版本是 2.6.3 呀

mrrocket 回复

看下 rbenv 的文档,rbenv 可以让开发环境的 ruby 和生产环境的版本都是一致的。

rbenv 使用 ruby-build 可以 install 各个版本的 ruby。

用 Nginx 和 Passenger 时,nginx 的配置文件中需要配置 passenger_ruby。

没有用 Apache 和 Passenger 做 web 服务,不知道其具体的配置。

crosspass 回复

好的,感谢感谢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号