因为初学Ruby,四处查资料无果,才来的贴出亲自试过的操作,覆盖整个个人入门笔记博客中,故所有的操作,都以最明了的方式阐述,当你创建完一个新的Rails应用后,你发现JAVA中我们可以编写maven聚合项目来控制其子项目的JDK,TOMCAT等等的版本,那么Ruby是怎样来管理的呢,答案就是在Gemfile中加依赖,而这个文件不是你手动编写的,而是使用Bundler来安装和引入该应用所需的gem。执行rails new命令时会自动运行Bundler(bundle install命令),而bundle就是根据Gemfile文件中的来依赖你所定义的源,就像JAVA中的依赖jar包一样。下面先看看默认生成的Gemfile中有什么?
1 source 'https://rubygems.org' 2 git_source(:github) { |repo| "https://github.com/#{repo}.git" } 3 4 ruby '2.3.1' 5 6 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 7 gem 'rails', '~> 5.2.0' 8 # Use sqlite3 as the database for Active Record 9 gem 'sqlite3' 10 # Use Puma as the app server 11 gem 'puma', '~> 3.11' 12 # Use SCSS for stylesheets 13 gem 'sass-rails', '~> 5.0' 14 # Use Uglifier as compressor for JavaScript assets 15 gem 'uglifier', '>= 1.3.0' 16 # See https://github.com/rails/execjs#readme for more supported runtimes 17 # gem 'mini_racer', platforms: :ruby 18 19 # Use CoffeeScript for .coffee assets and views 20 gem 'coffee-rails', '~> 4.2' 21 # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks 22 gem 'turbolinks', '~> 5' 23 # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 24 gem 'jbuilder', '~> 2.5' 25 # Use Redis adapter to run Action Cable in production 26 # gem 'redis', '~> 4.0' 27 # Use ActiveModel has_secure_password 28 # gem 'bcrypt', '~> 3.1.7' 29 30 # Use ActiveStorage variant 31 # gem 'mini_magick', '~> 4.8' 32 33 # Use Capistrano for deployment 34 # gem 'capistrano-rails', group: :development 35 36 # Reduces boot times through caching; required in config/boot.rb 37 gem 'bootsnap', '>= 1.1.0', require: false 38 39 group :development, :test do 40 # Call 'byebug' anywhere in the code to stop execution and get a debugger console 41 gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] 42 end 43 44 group :development do 45 # Access an interactive console on exception pages or by calling 'console' anywhere in the code. 46 gem 'web-console', '>= 3.3.0' 47 gem 'listen', '>= 3.0.5', '< 3.2' 48 # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 49 gem 'spring' 50 gem 'spring-watcher-listen', '~> 2.0.0' 51 end 52 53 group :test do 54 # Adds support for Capybara system testing and selenium driver 55 gem 'capybara', '>= 2.15', '< 4.0' 56 gem 'selenium-webdriver' 57 # Easy installation and use of chromedriver to run system tests with Chrome 58 gem 'chromedriver-helper' 59 end 60 61 # Windows does not include zoneinfo files, so bundle the tzinfo-data gem 62 gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
可以看到很多的代码都被#注释掉了,这些代码之所以注释而又放在这,是为了告诉你一些常用的gem,也是为了展示Bundler的句法,在gem指令中,如果你没有指定版本,那么Bundler就会默认安装最新版。
题外话:
gem 'uglifier', '>= 1.3.0' 这行代码的意思是,安装版本号大于或等于1.3.0的uglifier(作用是压缩 Asset Pipeline中的文件),就算是7.2版也会安装。 gem 'coffee-rails','~> 4.0.0' 这行代码的意思是,安装版本号大于4.0.0,但小于4.1的coffee-rails。也就是说,>=表示法意思是始终安装最新版;~> 4.0.0表示法的意思是只安装最后一个数字变化的版本
但是往往开发中我们会修改Gemfile,换用更为精准的版本号,并且引用国内淘宝的,就不用翻墙,提高速度,那么下面就来看看修改过后的文件。
注意将source 'https://rubygems.org' 改为 source 'https://ruby.taobao.org'
修改完后执行Bundle install命令,来安装这些gem,注意别像我一样蠢,一开始居然没在项目内运行命令,应该在你带有Gemfile的目录下执行Bbundle install.然后出现类似下面提示,就是更新依赖成功
Using rake 12.3.1 Using concurrent-ruby 1.0.5 Using i18n 1.0.1 Using minitest 5.11.3 Using thread_safe 0.3.6 Using tzinfo 1.2.5 Using activesupport 5.2.0 Using builder 3.2.3 Using erubi 1.7.1 Using mini_portile2 2.3.0 Using nokogiri 1.8.2 Using rails-dom-testing 2.0.3 Using crass 1.0.4 Using loofah 2.2.2 Using rails-html-sanitizer 1.0.4 Using actionview 5.2.0 Using rack 2.0.5 Using rack-test 1.0.0 Using actionpack 5.2.0 Using nio4r 2.3.1 Using websocket-extensions 0.1.3 Using websocket-driver 0.7.0 Using actioncable 5.2.0 Using globalid 0.4.1 Using activejob 5.2.0 Using mini_mime 1.0.0 Using mail 2.7.0 Using actionmailer 5.2.0 Using activemodel 5.2.0 Using arel 9.0.0 Using activerecord 5.2.0 Using mimemagic 0.3.2 Using marcel 0.3.2 Using activestorage 5.2.0 Using public_suffix 3.0.2 Using addressable 2.5.2 Using io-like 0.3.0 Using archive-zip 0.11.0 Using bindex 0.5.0 Using msgpack 1.2.4 Using bootsnap 1.3.0 Using bundler 1.16.2 Using byebug 10.0.2 Using xpath 3.1.0 Using capybara 3.2.1 Using ffi 1.9.25 Using childprocess 0.9.0 Using chromedriver-helper 1.2.0 Using coffee-script-source 1.12.2 Using execjs 2.7.0 Using coffee-script 2.4.1 Using method_source 0.9.0 Using thor 0.20.0 Using railties 5.2.0 Using coffee-rails 4.2.2 Using multi_json 1.13.1 Using jbuilder 2.7.0 Using rb-fsevent 0.10.3 Using rb-inotify 0.9.10 Using ruby_dep 1.5.0 Using listen 3.1.5 Using puma 3.11.4 Using sprockets 3.7.1 Using sprockets-rails 3.2.1 Using rails 5.2.0 Using rubyzip 1.2.1 Using sass-listen 4.0.0 Using sass 3.5.6 Using tilt 2.0.8 Using sass-rails 5.0.7 Using selenium-webdriver 3.12.0 Using spring 2.0.2 Using spring-watcher-listen 2.0.1 Using sqlite3 1.3.13 Using turbolinks-source 5.1.0 Using turbolinks 5.1.1 Using uglifier 4.1.11 Using web-console 3.6.2 Bundle complete! 18 Gemfile dependencies, 78 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed.
好了,到此为止Gemfile文件就入门完了,嘻嘻。
如果你还想深入了解Gemfile文件,那个可以参考下 http://tosbourn.com/what-is-the-gemfile/