taps
今日herokuのデータを操作する機会があって触ったので中を見てみる
herokuのdbのデータをpush/pullするときとかに使われている
ローカルで違うdb間でデータやりとりするのにも使える
#342 Migrating to PostgreSQL - RailsCasts
version 0.3.24
rspec走らない
mocha stadaloneのエラー
mochaの中見る 不明 ギヴ
tree
$ tree
|____bin
| |____schema
| |____schema.cmd
| |____taps
|____lib
| |____taps
| | |____chunksize.rb
| | |____cli.rb
| | |____config.rb
| | |____data_stream.rb
| | |____db_session.rb
| | |____errors.rb
| | |____log.rb
| | |____monkey.rb
| | |____multipart.rb
| | |____operation.rb
| | |____progress_bar.rb
| | |____schema.rb
| | |____server.rb
| | |____utils.rb
| | |____version.rb
| |____vendor
| | |____okjson.rb
|____README.rdoc
|____spec
| |____base.rb
| |____chunksize_spec.rb
| |____cli_spec.rb
| |____data_stream_spec.rb
| |____operation_spec.rb
| |____server_spec.rb
| |____utils_spec.rb
|____VERSION.yml
VERSION.yml 初めて見た
lib/taps/version.rb
require "yaml"
module Taps
def self.version_yml
@@version_yml ||= YAML.load(File.read(File.dirname(__FILE__) + '/../../VERSION.yml'))
end
def self.version
version = "#{version_yml[:major]}.#{version_yml[:minor]}.#{version_yml[:patch]}"
version += ".#{version_yml[:build]}" if version_yml[:build]
version
end
def self.compatible_version
"#{version_yml[:major]}.#{version_yml[:minor]}"
end
end
クラス変数に入れている
@@version_yml ||=
major, minor, patchの次はbuild
+= ".#{version_yml[:build]}"
taps.gemspec
定数でなくメソッド使ってる
require "taps/version"
gem.version = Taps.version
bin/taps
lib/taps.rb
がない
bin/taps
内
require 'taps/cli'
引数 & run
Taps::Cli.new(ARGV.dup).run
module Taps
class Cli
attr_accessor :argv
def initialize(argv)
@argv = argv
end
def run
method = (argv.shift || 'help').to_sym
if [:pull, :push, :server, :version].include? method
send(method)
else
help
end
end
module, classの行でインデント無い
version & help
def version
puts Taps.version
end
def help
puts <<EOHELP
(@@var ||= false) == true
existing?
おもしろい
taps/config.rb
module Taps
def self.exiting=(val)
@@exiting = val
end
def exiting?
(@@exiting ||= false) == true
end
Hash拡張 -> lib/taps/monkey.rb 名前がmonkey
class Hash
def symbolize_keys
attr_reader + initialize
多くのパターンが attr_readerとinitialize内での@var代入
module Taps
class Operation
attr_reader :opts
def initialize(database_url, remote_url, opts={})
@opts = opts
disable warnings
# disable warnings, rest client makes a lot of noise right now
$VERBOSE = nil
progressbar.rb
コピーっぽい
また今度見つけたら詳しく見る
60min