fzngagan
(Faizaan Gagan)
2020 年8 月 22 日 22:53
1
@sam
我无法在插件中安装某些 gem,例如 google-protobuf。该 gem 是 google-cloud-vision gem 的依赖项。
这是一个尝试安装它的插件:GitHub - fzngagan/gem-issue · GitHub
日志
gem install google-protobuf -v 3.13.0 -i /Users/faiz/discenv/discourse/plugins/gem-issue/gems/2.6.3 --no-document --ignore-dependencies --no-user-install
Successfully installed google-protobuf-3.13.0-universal-darwin
1 gem installed
You are specifying the gem google-protobuf in /Users/faiz/discenv/discourse/plugins/gem-issue/plugin.rb, however it does not exist!
Looked for: /Users/faiz/discenv/discourse/plugins/gem-issue/gems/2.6.3/specifications/google-protobuf-3.13.0.gemspec
出现此问题的原因是 .gemspec 文件的名称与代码中假设的 spec_file 名称不匹配。
spec_file = spec_path + "/#{name}-#{version}.gemspec"
unless File.exists? spec_file
command = "gem install #{name} -v #{version} -i #{gems_path} --no-document --ignore-dependencies --no-user-install"
if opts[:source]
command << " --source #{opts[:source]}"
end
puts command
puts `#{command}`
end
if File.exists? spec_file
spec = Gem::Specification.load spec_file
spec.activate
unless opts[:require] == false
require opts[:require_name] ? opts[:require_name] : name
end
else
puts "You are specifying the gem #{name} in #{path}, however it does not exist!"
puts "Looked for: #{spec_file}"
exit(-1)
end
end
依我看来,这种情况可能仅在使用平台特定的 gem 时发生,因为如果 gem 依赖平台,平台名称会被添加到 gem 名称中。这一点在此处有说明:Specification Reference - RubyGems Guides
3 个赞
eviltrout
(Robin Ward)
2020 年8 月 24 日 16:58
2
不清楚你为什么在这个话题中提到了我?我对我们自定义的 gem 解析了解不多,抱歉。
1 个赞
fzngagan
(Faizaan Gagan)
2020 年8 月 24 日 17:45
3
我查看了 blame 记录,看来你对这个文件的提交最多吧?很乐意有人给我指个方向
eviltrout
(Robin Ward)
2020 年8 月 24 日 19:58
4
我认为 @sam 可能能够提供帮助。他编写了插件的 gem 导入功能。
3 个赞
@sam 能否请你在这一点上帮助 @fzngagan ?我正在赞助这个插件:
该插件将向所有人开放。保持论坛不含可能造成伤害的图片至关重要,这也有助于避免因违规内容而受到 Google AdSense 的处罚。
1 个赞
sam
(Sam Saffron)
2020 年8 月 28 日 07:50
8
看来这里似乎有个 bug,不如提交一个 PR 来尝试修复这个怪癖?
2 个赞
fzngagan
(Faizaan Gagan)
2020 年8 月 28 日 21:25
9
master ← fzngagan:gem-platform
merged 02:36AM - 31 Aug 20 UTC
Discussed here: https://meta.discourse.org/t/facing-an-issue-while-installing-so… me-gems-in-the-plugin/161780
这是一个修复该问题的非常简单的 PR。
我尝试寻找一种巧妙的方法来解决这个问题,这样开发人员就不必担心平台问题,但没有找到。如果我发现更好的解决方案,很乐意在此基础上进行改进。
另外,给开发人员的一个提示:在开发期间,您可以简单地将 gem 添加到 discourse 的 gemfile 中,而无需为此抓狂。只需在部署时才需要担心所有这些。
5 个赞