ruby
ruby是一个可执行文件,
which ruby //查看ruby存放路径
rvm
rvm 全称是ruby version manager,是用来管理ruby版本的工具,默认只能安装一个版本的ruby,通过rvm就可以安装多个版本的ruby并且可以切换想使用的版本
rvm安装
-
百度搜RVM首页,给出的安装方式
curl -L https://get.rvm.io | bash -s stable -
最后执行
source ~/.rvm/scripts/rvm
rvm list //查看已经安装的本地版本
rvm use 2.4.1 --default //切换版本
rvm list know //rvm能够管理的的ruby版本
rvm instal ruby --head //安装rvm能够安装的最新版本
rvm remove 1.8.7 // rvm 卸载 一个已安装版本
rvm gemset list //列出
gem
Gem是基于Ruby的一些开发工具包,大部分代码库以gem形式发布,RubyGems用来创建、分享、安装这些代码库
gem 安装ruby包路径
gem install cocoapods
//查看gem paths
which pod 或 gem env
//ruby 包路径
/Users/yutangzhao/.rvm/gems/ruby-2.7.2/bin/pod
// gem path
/Users/yutangzhao/.rvm/gems/ruby-2.7.2/gems/cocoapods-1.11.3
//注意:不同ruby版本存放包路径是不一样的
gemset
- 一个gemset就是就是一个gems目录下的抽象
- 使用不同的gemset,ruby包的路径也不一样
- gem env 查看当前ruby下的gemset
rvm gemset list
rvm gemset use defalut
//defalut
// /Users/yutangzhao/.rvm/gems/ruby-2.7.2
//global
// /Users/yutangzhao/.rvm/rubies/ruby-2.7.2/lib/ruby/gems/2.7.0
//tangge
// /Users/yutangzhao/.rvm/gems/ruby-2.7.2@tangge
制定一个独立路径存放ruby包
- 不想被其他目录下已存在各种ruby包污染
- 制造一个干净的gems软件包目录
- rvm gemset 可以办到
//1.切换到制定版本的ruby下
rvm use 2.7.2 --default
//2.创建gemset
rvm gemset create tangge
//3.使用gemset
rvm gemset use tangge
gemset 其他命令
rvm gemset delete xxx //输入要删除的gemset
rvm gemset empty xxx //清空当前gemset环境下的所有ruby包
Bundler
能够跟踪并安装所需的特定版本的gem,来为Ruby项目提供一致的运行环境
source 'https://rubygems.org'
gem 'cocoapods', path: './CocoaPods'
gem 'ruby-debug-ide'
gem 'debase'
bundle安装
gem install bundle
gem install bundle -v "=2.1.4" #安装指定版本的bundle
#查看bundle版本
bundle -v
#查看更多bundle命令
bundle -h
#卸载bundle
gem uninstall bundle
#gem包安装信息
bundle info xcodeproj
#打印Gem.lock信息
bundle env
#bundle config
bundle config mirror.https://rubygems.org https://rubygems-mirror.org
#打开一个gem包
bundle info xcodeproj
#需要设置EDITOR或BUNDLEER_EDITOR环境变量
export EDITOR=code
#sublime
export EDITOR='subl -w'
Bundler 环境继承给子进程的问题
默认使用的是自己bundle的环境
#1.可以写多条命令
Bundle.with_clean_env do
system 'cd User/hanghang/rubyApp; bundle exec ruby main.rb'
end
#2.只能执行一条命令
Bundle.clean_system('')
#3.只能执行一条命令
Bundle.clean_exec('')
bundle 一次性安装依赖
#1.创建一个工作目录
mkdir ruby_app
cd ruby_app
#2.初始化bundle
bundle init
#3.编辑Gemfile 添加依赖
gem "xcodeproj", '>= 1.17.0' ,'< 2.0'
#4.通过bundle安装依赖
bundle install #bundle _2.1.2_ install 指定版本安装
#5. 添加main.rb
require 'xcodeproj'
project_path = '/Users/yutangzhao/Movies/PadZone/PadZone.xcodeproj'
project = Xcodeproj::Project.open(project_path)
project.targets.each do |target|
puts target.name
end
#6.通过bundle来执行
bundle exec ruby main.rb #只能在 Gemfile 所在的目录、子目录下,执行 bundle exec
Gemfile
==================引用远程gem===================
#1.指定源
source "https://gems.ruby-china.com" #全局source
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
#通过版本号引用
gem 'nokogiri'
gem 'rails' ,'5.0.0'
gem 'rack' , '>=1.0'
gem 'thin', '~>1.1' #=> >=1.1 && <=2.0
#建议这样写法
gem "xcodeproj", '>= 1.17.0' ,'< 2.0'
gem 'cocoapods' #=> source 告诉cocoapods.gemspec文件去哪里搜索
#通过指定git引用gem包
gem 'rack', git:'https://github.com/rack/rack', branch: 'master'
#2.指定源 source block
source 'https://gems.ruby-china.com' do
gem 'xxx'
gem 'cocoapods'
...
end
#3.指定源
gem 'cocoapods' ,source:'https://gems.ruby-china.com'
==================引用本地gem local path ===================
#1.第一种方式
gem 'extracted_library' , :path => './vendor/extracted_library'
#2.第二种方式
path '/User/hanghang/Desktop/component' do
gem 'admui_ui' #=> admui_ui.gemspec
gem 'publik_ui' #=> publik_ui.gemspec
end
Gemfile高阶用法
1.通过不同的group管理gem依赖
#source "https://rubygems.org"
source "https://gems.ruby-china.com"
#:default group
gem 'dotenv'
#:development group
gem 'httparty', group: :development
#:test group
group :test do
gem 'colored2'
end
#:test + :development
group :test, :development do
gem 'xcodeproj'
end
#:cucumber + :test
gem 'rest-client',group: [:cucumber, :test]
2.bundle install
main.rb
require 'dotenv'
require 'httparty'
require 'colored2'
require 'xcodeproj'
require 'rest-client'
bundle exec ruby main.rb
bundle exec ruby main.rb
结论: 所有gourp中 gem 'xxx' 的依赖都能找到
3.bundle install --without
#排除指定test、development group下gem的安装
bundle install --without test development
该命令后续版本可能会废弃,下面命令可以代替
bundle config set without 'test development'
bundle install
最终会在根目录下生成.bundle/config配置文件
---
BUNDLE_WITHOUT: "test:development"
取消以排除的group,需要手动删除.bundle/config 文件夹
rm -rf .bundle/config
4.bundle config
#设置忽略的group依赖
bundle config set without 'test development'
#取消设置忽略的group依赖
bundle config unset without
bundle install
bundle.require
取消每个文件重复导入文件名
require 'rubygems'
require 'bundler'
Bundler.require(:default,:development,:test)
Dotenv.load
project_path = '/Users/yutangzhao/Movies/PadZone/PadZone.xcodeproj'
project = Xcodeproj::Project.open(project_path)
project.targets.each do |target|
puts target.name
end
brew
brew 是MacOS上的软件包管理工具
安装
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Carthage
Carthage安装
//安装 carthage
brew install carthage
//查看版本
carthage version
//卸载 carthage
brew uninstall carthage
//执行cartfile
Carthage update --platform iOS
Cocoapods
是Gem下面的一个pod库,用来管理iOS的三方源码
cocoapods安装
后面更新
语法
//单行注释
#
//换行
put "tangge" //自动换行
print "tangge" //不会自动换行
//使用字符串
tangge = 'sddd'
puts "hanghang#{tangge}" //双引号可以使用变量 单引号不会起作用
//反引号
puts `ruby --version`
ruby报错
require: cannot load such file --xxx(LoadError)
- ruby环境下没有这个库
- ruby对应的gemset目录下 无法找到xxx.rb文件