quattro_4 scribble

scribble 落書き (調べた事をただ落書きする)

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