http
require 'uri'
require 'net/http'
url = URI('http://www.weather.com.cn/data/sk/101010100.html')
http = Net::HTTP.new(url.host,url.port);
request = Net::HTTP::Get.new(url)
request["Cookie"] = "HttpOnly"
response = http.request(request)
puts response.read_body
#输出结果:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"27.9","WD":"南风","WS":"小于3级","SD":"28%","AP":"1002hPa","njd":"暂无实况","WSE":"<3","time":"17:55","sm":"2.1","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB"}}
get
require 'uri'
require 'net/http'
require 'json'
require 'pp'
uri = URI('http://www.weather.com.cn/data/sk/101010100.html')
response = Net::HTTP.get(uri);
puts response.class
dict = JSON.parse(response)
pp dict
#输出结果:
String
{"weatherinfo"=>
{"city"=>"北京",
"cityid"=>"101010100",
"temp"=>"27.9",
"WD"=>"南风",
"WS"=>"小于3级",
"SD"=>"28%",
"AP"=>"1002hPa",
"njd"=>"暂无实况",
"WSE"=>"<3",
"time"=>"17:55",
"sm"=>"2.1",
"isRadar"=>"1",
"Radar"=>"JC_RADAR_AZ9010_JB"}}
post
require 'net/http'
uri = URI('http://www.weather.com.cn/data/sk/101010100.html')
request = Net::HTTP::Post.new(uri);
request.set_form_data('username' => 'tangge')
response = Net::HTTP.start(uri.hostname,uri.port) do |http|
http.request(request)
end
case response
when Net::HTTPSuccess, Net::HTTPRedirection
puts 'succes'
else
puts 'faild'
end
curl
安装
brew install curl
get
curl http://www.weather.com.cn/data/sk/101010100.html
post
curl http://www.weather.com.cn/register -d "username=tangge&password=123456"
upload
curl http://www.weather.com.cn/upload -F "file=@main.rb"
封装upload工具类
====================upload.rb====================
def upload(url, file_path)
raise 'url 必须传递' unless url
raise 'file_path 必须传递' unless file_path
raise 'file_path 不存在' unless File.exist?(file_path)
cmds = ['curl']
cmds << url
cmds << "-F \"file=@#{file_path}\""
cmds_to_s = cmds.join(' ')
#执行拼接命令
system(cmds_to_s)
end
rake
安装rake
gem install rake
Rakefile
desc('这是一个测试 task')
task(:test) do
ruby 'main.rb'
end
task(default:%w[test])
#输出结果:
/Users/yutangzhao/.rvm/rubies/ruby-2.7.2/bin/ruby main.rb
rakefile .....
desc('这是一个测试 task')
task(:test_01) do
puts 'test_01....'
end
task(:test_02) do
puts 'test_02....'
end
task(:test_03) do
puts 'test_03.....'
end
task(default:%i[test_01 test_02])
#执行命令:
rake 、 rake test_03
task依赖
desc('这是一个测试 task')
task(:test_01) do
puts 'test_01....'
end
task(:test_02) do
puts 'test_02....'
end
#test_03 依赖test_01 test_02
task(:test_03 => %i[test_01 test_02]) do
puts 'test_03.....'
end
task(default:%i[test_03])
#输出结果:
test_01....
test_02....
test_03.....
namespace
desc('这是一个测试 task')
task(:test_01) do
puts 'test_01....'
end
namespace(:my_name) do
task(:test_01) do
puts 'my_name:test_01....'
end
end
#执行命令:
rake test_01 、rake my_name:test_01
#运行结果:
test_01....
my_name:test_01....
task(:test_01) do
puts 'test_01....'
end
namespace(:my_name) do
task(:test_01) do
puts 'my_name:test_01....'
end
end
task(:test_02) do
Rake::Task['test_01'].invoke
Rake::Task['my_name:test_01'].invoke
end
#输出结果:
test_01....
my_name:test_01....
task参数
require 'pp'
require 'rake'
task(:task_1, [:arg1, :arg2]) do |task, args|
puts args[:arg1].to_i + args[:arg2].to_i
end
#输出结果:
3
task环境变量
require 'pp'
require 'rake'
task(:task_1) do |task|
puts ENV['arg1'].to_i + ENV['arg2'].to_i
end
#执行命令
arg1=1 arg2=3 rake task_1
#输出结果:
4
OptionParser解析参数
require 'pp'
require 'rake'
require 'optparse'
task(:task_1) do
map = {} #接受参数
opts = OptionParser.new
opts.banner = "Usage: rake add [options]"
opts.on("-o", "--one ARG", Integer) { |num1| map[:num1] = num1 }
opts.on("-t","--two ARG", Integer) { |num2| map[:num2] = num2 }
args = opts.order!(ARGV) {}
opts.parse!(args)
pp map
puts map[:num1].to_i + map[:num2].to_i
#退出
exit
end
# 执行命令
rake task_1 -- -o 1 -t 2
# 输出结果:
3
erb
=====================config.rb.erb====================
//this file generated by script, don't edit it !
<%="name: #{@name};\n"%>
<%="debug: #{@debug};\n"%>
<%="adhoc: #{@adhoc};\n"%>
<%="release: #{@release};\n"%>
=====================main.rb====================
require 'pp'
require 'erb'
class Config
include(ERB::Util)
attr_accessor :name, :debug, :adhoc , :release
#将 erb文件实例化, 绑定到当前对象的上线文环境
def config_file
ERB.new(File.read('config.h.erb'), nil, '>').result(binding)
end
def initialize(header_file_path, name, debug, adhoc, release)
@name = name
@debug = debug
@adhoc = adhoc
@release = release
File.open(header_file_path, 'w+') do |f|
f.puts(config_file)
end
end
end
Config.new('Config.h', 'tangge', 'debug-001', 'adhoc-002', 'release-003')
指定gemset环境,进入文件夹就会自动切换
#指定ruby版本
echo '2.7.2' > .ruby-version
#指定gemset
echo 'cocoapods' > .ruby-gemset