Rails 向 Gemfile 添加 gem 包声明,对项目有啥影响?

diguage · 2013年02月26日 · 最后由 Rei 回复于 2013年02月26日 · 7185 次阅读

由于想开发一个网站,又看重 Rails 的开发速度。所以,开始学习 Rails。

前两天把 Ruby China 项目的源代码下载下来,根据这个项目的 Gemfile 中的 gem 声明,我新建了一个 Gemfile,在这个目录下新建了项目,不覆盖 Gemfile,然后 bundle install。因为新建的流程和完全重新开始新建流程不太一样,担心会对项目有啥不好的副作用,我就又建立一个全新的项目。使用 Beyond Compare 对比了一下,没有发现什么不一样的地方。最后,我第三次新建项目,修改了项目的 Gemfile,然后再 bundle install。再次对比,还是没有发现什么不一样的地方。我就很纳闷。

请问,Gemfile 对 Rails 项目有啥影响?添加 gem 声明,再 bundle install 后,会都项目产生什么变化?请熟悉的朋友“现身说法”。哈哈

@huacnlee @lgn21st @Rei 能否解答一下?谢谢!

bundle 会根据 Gemfile 生成 Gemfile.lock,里面锁定了 gem 的版本依赖,在运行的时候会载入指定版本的 gem。

到这里 http://gembundler.com/ 你能找到一切关于 bundler 和 Gemfile 的知识。

你是不是这样建的?

- my_test_dir
  |- Gemfile
  |- projectA
  |- projectB
  `- projectC

#3 楼 @doitian 不是,Gemfile 在项目目录中,就是生成 Rails 项目中,Gemfile 的那个文件的位置。

你要不调用那些 Gem 的功能,其实就没什么影响(不过 Rails 启动的时候会 require 那些 Gem 的) 具体每个 Gem 怎么使用你得看他们各自的文档

#2 楼 @lgn21st 好的,我看看!还真不知道有这个东东。谢谢!

#1 楼 @Rei #5 楼 @huacnlee 不会项目中添加什么文件吗?!比如添加分页的 kaminari,不会添加相应的 Controller 或者其他相关文件吗? 另外,添加了 Bootstrap(anjlab-bootstrap-rails、bootstrap-will_paginate 和 bootstrap_helper),如果没有添加相关的 CSS 文件,要添加样式,或者自定义页面样式,会不会找不到 CSS 文件?(这个 Gem,我是在 RubyChina 的项目中看到的,还没研究。另外,关于这些 Gem 的叙述,不知是否正确。)

#7 楼 @diguage 不会往你的项目目录写入文件,但是会在运行时从 gem 路径载入相应的库。

Bootstrap 是借助 assets pipeline,预编译时从 gem 目录读文件,要自定义可以在 app/assets 里面覆盖样式。

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