我可以从一个Gemfile重新构建一个Gemfile吗?锁文件吗?



我想复制一个旧的应用程序,但bundle install失败,因为Gemfile过时了,不再捕获兼容的版本。我想我可以通过错误和试验来尝试正确的Gemfile,但我能以某种方式使用Gemfile吗?锁定在另一个较旧的正常安装中自动生成的,以获取有关兼容版本的信息?

是否有办法从Gemfile生成一个Gemfile(精确的版本)?锁定或更新现有的?看起来这个文件使用的语法与Gemfile不同。

更新。我没有找到任何脚本从Gemfile构建Gemfile。但是,在我复制了Gemfile之后。build install工作

使用源,路加福音!

如果你有源代码管理,回头看看你的历史记录,找到你的应用程序或gem的Gemfile或gemspec。如果你只有一个Gemfile。然后你应该能够用bundle install构建应用程序,只要Bundler有有效的gem源可以访问。

您还可以为require关键字搜索源代码,并至少确定您正在寻找的模块。您还可以查看Gemfile中的顶级项。查看在构建lockfile时Gemfile或gemspec中的内容。

作为一个例子,Gemfile的一部分。lock for Sinatra列出了以下依赖项:

DEPENDENCIES
activesupport (~> 5.1.6)
json
minitest (~> 5.0)
nokogiri (!= 1.5.0)
puma
rack!
rack-protection!
rack-test (>= 0.6.2)
rake
sinatra!
sinatra-contrib!
twitter-text (= 1.14.7)
yard

其他部分必须处理作为核心依赖项的结果而被拉入的源、约束和其他依赖项。重建Gemfile所需的一切都在那里,但据我所知,除了Gemfile之外,没有任何工具可以为您完成此工作。lock是从一个Gemfile中构建的,而不是相反。

虽然没有简单的方法来逆向工程一个Gemfile。锁定到Gemfile或gemspec中,您当然可以从specs:密钥下的顶级条目构建,以及DEPENDENCIES密钥。

参见

  • https://bundler.io/man/gemfile.5.html
  • https://stackoverflow.com/a/44980854/1301972

相关内容

最新更新