• Ruby小白入门笔记之 <Gemfile 文件>


          因为初学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/

  • 相关阅读:
    [LeetCode]Valid Parentheses
    LeetCode & Q219-Contains Duplicate II
    LeetCode & Q217-Contains Duplicate-Easy
    LeetCode & Q189-Rotate Array-Easy
    LeetCode & Q169-Majority Element-Easy
    LeetCode & Q167-Two Sum II
    LeetCode & Q122-Best Time to Buy and Sell Stock II-Easy
    LeetCode & Q121-Best Time to Buy and Sell Stock-Easy
    MapReduce工作机制——Word Count实例(一)
    LeetCode & Q119-Pascal's Triangle II-Easy
  • 原文地址:https://www.cnblogs.com/lwh-note/p/9177726.html
Copyright © 2020-2023  润新知