在rails中使用Gemfile有什么用?

vij*_*jay 49 ruby ruby-on-rails gemfile

Gemfile在rails中有什么用?

怎么用Gemfile

Nic*_*nto 89

在Rails开发过程中,有时候你会想要提供一些你需要的功能,但要么你不知道怎么做,要么你不想自己实现它,因为很多有才华的开发人员已将工作投入其中.

您可能需要的这些开发(用户身份验证,消息系统,资产处理程序,地理定位,分页系统,链接到外部服务,如Amazon AWS,以及最后但并非最不重要的Rails本身)称为Ruby Gems.这些是ruby软件包,不一定与Rails有关,但由于Rails基于Ruby,因此98%的宝石可用于您的Rails webapp代码.

github中可以找到很多宝石,但它通过ruby-gemsruby-toolbox搜索宝石更有乐趣

gemfile是要包含在项目中的所有宝石的列表.它与bundler(也是gem)一起使用来安装,更新,删除和管理您使用过的宝石.

gemfile还有另一个目的-你可以组宝石中:development,:test,:assets,:production,等团体和Rails会知道什么时候包括宝石.例如:

group :development, :test do
    gem "rspec-rails"
    gem "factory_girl_rails"
    gem "guard-rspec"
end
Run Code Online (Sandbox Code Playgroud)

请注意,在Rails 4上,该assets组已被弃用

这些宝石属于开发环境和测试环境,因为它们用于测试应用程序.您不需要在生产环境中使用它们(您可以,但这将不必要地膨胀内存).

所以 - 要使用gemfile,只需编写您想要安装的gem,例如

gem 'devise'
Run Code Online (Sandbox Code Playgroud)

确保bundler事先安装(在你的console/cmd/ssh中)

$ gem install bundler
Run Code Online (Sandbox Code Playgroud)

然后在控制台中写入

bundle install
Run Code Online (Sandbox Code Playgroud)

你会注意到另一个gemfile出现了!Gemfile.lock 正如您将看到的那样,如果您使用文本阅读器打开它,则会列出所有宝石及其版本及其依赖项.当您需要知道安装了哪些版本的gem时,这将非常有用.

有关更多信息,请阅读Gemfile- 在捆绑页面阅读

有关挑选宝石的信息,您可以从此开始

祝好运并玩得开心点!


好的,那么这个创建的Gemfile.lock是什么?

Gemfile.lock,顾名思义就是对已安装的所有gem的所有版本进行锁定.因此,如果需要安装Gemfile,则锁定文件是安装的,以及实际启动和运行应用程序所需的版本.

如果您没有特定版本中的宝石(如Gemfile.lock中所指定),rails会抱怨并且您必须安装丢失的宝石(通过bundle install)或手动修复任何冲突(我相信捆绑器会给你一些线索)那个)

有些事要了解 Gemfile.lock

  • 如果您意外删除它,它将在您运行时重新生成bundle install.如果你意外删除Gemfile,你运气不好..你应该使用git :)
  • Heroku不关心Gemfile.lock,因为它将重新安装所有宝石.因此,对于Heroku,您必须设置所需的gem版本,否则Heroku将始终安装最新版本的gem,这可能会导致问题
  • 将Gemfile.lock保留在项目中,这样您就可以随时了解哪些版本的gem可以让您的应用正常运行.


wil*_*ynn 10

GemfileBundler的配置,用于管理应用程序的Ruby依赖项.该网站包含大量文档,包括Gemfile手册页.