arison 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1932f2c84e18288494dbb91ccd20c04964588202
4
+ data.tar.gz: 8c22039e2a3767b6ffe0633a841d3616247c1ee8
5
+ SHA512:
6
+ metadata.gz: aa2f1c0a2b6ba015d36d0fb791158effaebfee59d15926277143a47e6fdc32316c72607887375c393ac2b57f5aaade6bb18609f150e75f2412e242089f36be9c
7
+ data.tar.gz: 39c8a16410afffef3164eea806d8d1e7bb3f5b572c93f45784cbac9fab654beea1441ab3e608b2bd6395b266e9edb3c7ae48d22e4a5d38e36e83588760b331cb
data/.document ADDED
@@ -0,0 +1,3 @@
1
+ -
2
+ ChangeLog.md
3
+ LICENSE.txt
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ Gemfile.lock
2
+ doc/
3
+ pkg/
4
+ **/*.gem
5
+ .yardoc/
6
+ .bundle/
7
+ vendor/bundle/
8
+ .tags
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour --format documentation
data/.travis.yml ADDED
@@ -0,0 +1,16 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1
7
+ - ruby-head
8
+
9
+ os:
10
+ - linux
11
+ - osx
12
+
13
+ gemfile:
14
+ - Gemfile
15
+
16
+ script: 'bundle exec rake spec'
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --markup markdown --title "pq Documentation" --protected
data/ChangeLog.md ADDED
@@ -0,0 +1,4 @@
1
+ ### 0.1.0 / 2014-09-27
2
+
3
+ * Initial release:
4
+
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem 'kramdown'
7
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2014 Hiroshi Toyama
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # arison [![Build Status](https://secure.travis-ci.org/toyama0919/arison.png?branch=master)](http://travis-ci.org/toyama0919/arison)
2
+
3
+ TODO: Summary
4
+
5
+ TODO: Description
6
+
7
+ ## Examples
8
+
9
+ $ arison sample
10
+ #=> hoge
11
+
12
+ ## Installation
13
+
14
+ Add this line to your application's Gemfile:
15
+
16
+ gem 'arison'
17
+
18
+ And then execute:
19
+
20
+ $ bundle
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install arison
25
+
26
+ ## Contributing
27
+
28
+ 1. Fork it
29
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
30
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
31
+ 4. Push to the branch (`git push origin my-new-feature`)
32
+ 5. Create new [Pull Request](../../pull/new/master)
33
+
34
+ ## Information
35
+
36
+ * [Homepage](https://github.com/toyama0919/arison)
37
+ * [Issues](https://github.com/toyama0919/arison/issues)
38
+ * [Documentation](http://rubydoc.info/gems/arison/frames)
39
+ * [Email](mailto:toyama0919@gmail.com)
40
+
41
+ ## Copyright
42
+
43
+ Copyright (c) 2014 Hiroshi Toyama
44
+
45
+ See [LICENSE.txt](../LICENSE.txt) for details.
data/Rakefile ADDED
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'rake'
5
+
6
+ begin
7
+ gem 'rubygems-tasks', '~> 0.2'
8
+ require 'rubygems/tasks'
9
+
10
+ Gem::Tasks.new
11
+ rescue LoadError => e
12
+ warn e.message
13
+ warn "Run `gem install rubygems-tasks` to install Gem::Tasks."
14
+ end
15
+
16
+ begin
17
+ gem 'rspec', '~> 2.4'
18
+ require 'rspec/core/rake_task'
19
+
20
+ RSpec::Core::RakeTask.new
21
+ rescue LoadError => e
22
+ task :spec do
23
+ abort "Please run `gem install rspec` to install RSpec."
24
+ end
25
+ end
26
+
27
+ task :test => :spec
28
+ task :default => :spec
29
+
30
+ begin
31
+ gem 'yard', '~> 0.8'
32
+ require 'yard'
33
+
34
+ YARD::Rake::YardocTask.new
35
+ rescue LoadError => e
36
+ task :yard do
37
+ abort "Please run `gem install yard` to install YARD."
38
+ end
39
+ end
40
+ task :doc => :yard
data/arison.gemspec ADDED
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path('../lib/arison/version', __FILE__)
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "arison"
7
+ gem.version = Arison::VERSION
8
+ gem.summary = %q{postgresql command line interface}
9
+ gem.description = %q{postgresql command line interface}
10
+ gem.license = "MIT"
11
+ gem.authors = ["Hiroshi Toyama"]
12
+ gem.email = "toyama0919@gmail.com"
13
+ gem.homepage = "https://github.com/toyama0919/arison"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ['lib']
19
+
20
+ gem.add_dependency 'thor', '~> 0.19.1'
21
+ gem.add_dependency 'pg'
22
+ gem.add_dependency 'activesupport'
23
+ gem.add_dependency 'activerecord'
24
+ gem.add_dependency 'activerecord-import'
25
+
26
+ gem.add_development_dependency 'bundler'
27
+ gem.add_development_dependency 'pry', '~> 0.10.1'
28
+ gem.add_development_dependency 'rake', '~> 10.3.2'
29
+ gem.add_development_dependency 'rspec', '~> 2.4'
30
+ gem.add_development_dependency 'rubocop', '~> 0.24.1'
31
+ gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
32
+ gem.add_development_dependency 'yard', '~> 0.8'
33
+ end
data/bin/arison ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'arison'
5
+
6
+ Arison::CLI.start
data/lib/arison/cli.rb ADDED
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "thor"
3
+ require 'yaml'
4
+ require 'json'
5
+ require 'pp'
6
+
7
+ module Arison
8
+ class CLI < Thor
9
+
10
+ map '--version' => :version
11
+ map '-s' => :query_inline
12
+ map '-f' => :query_file
13
+ map '-b' => :import
14
+
15
+ class_option :profile, aliases: '-p', type: :string, default: 'default', desc: 'profile by .database.yml'
16
+ class_option :pretty, aliases: '-P', type: :boolean, default: false, desc: 'pretty print'
17
+ class_option :config, aliases: '--config', type: :string, default: "#{ENV['HOME']}/.database.yml", desc: 'config file'
18
+ def initialize(args = [], options = {}, config = {})
19
+ super(args, options, config)
20
+ @global_options = config[:shell].base.options
21
+ @config = YAML.load_file(@global_options['config'])
22
+ profile = @config[@global_options['profile']]
23
+ @core = Core.new(profile)
24
+ end
25
+
26
+ desc 'query_inline', 'Sample task'
27
+ option :query, aliases: '-q', type: :string, required: true, desc: 'query'
28
+ def query_inline
29
+ puts_json @core.query(options['query'])
30
+ end
31
+
32
+ desc 'query_file', 'query_file'
33
+ def query_file(file)
34
+ puts_json @core.query(File.read(file))
35
+ end
36
+
37
+ desc 'tables', 'tables'
38
+ def tables
39
+ puts_json @core.tables
40
+ end
41
+
42
+ desc 'columns', 'columns'
43
+ def columns(table_name)
44
+ puts_json @core.columns_with_table_name(table_name)
45
+ end
46
+
47
+ desc 'import', 'import'
48
+ def import(table)
49
+ data = @core.parse_json(STDIN.read)
50
+ @core.create_table(table, data)
51
+ @core.import(table, data)
52
+ end
53
+
54
+ desc 'info', 'info'
55
+ def info
56
+ puts_json @config
57
+ end
58
+
59
+ desc 'version', 'show version'
60
+ def version
61
+ puts VERSION
62
+ end
63
+
64
+ private
65
+ def puts_json(object)
66
+ puts JSON.pretty_generate(object)
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,175 @@
1
+ require 'active_record'
2
+ require 'activerecord-import'
3
+ require 'active_support'
4
+
5
+ module Arison
6
+ class Core
7
+
8
+ def initialize(profile)
9
+ @profile = profile
10
+ ActiveRecord::Base.establish_connection(@profile)
11
+ ActiveRecord::Base.default_timezone = :local
12
+ @connection = ActiveRecord::Base.connection
13
+ end
14
+
15
+ def query(sql)
16
+ @connection.exec_query(sql).to_a
17
+ end
18
+
19
+ def columns_with_table_name(table_name)
20
+ columns(get_class(table_name))
21
+ end
22
+
23
+ def columns(klass)
24
+ klass.columns.map do |column|
25
+ JSON.parse(column.to_json)
26
+ end
27
+ end
28
+
29
+ def tables
30
+ @connection.tables
31
+ end
32
+
33
+ def import(table_name, data)
34
+ klass = get_class(table_name)
35
+ limits = get_limit_hash(klass)
36
+ instances = []
37
+ data.each do |record|
38
+ instance = klass.new
39
+ begin
40
+ record = record.inject({}){ |result, (k, v)|
41
+ length = limits[k]
42
+ result[k] = (length.nil? || v.nil? || v.class != String) ? v : v.slice(0, length)
43
+ result
44
+ }
45
+ instance.attributes = record
46
+ rescue ActiveRecord::UnknownAttributeError => e
47
+ rescue => e
48
+ puts "\n#{e.message}\n#{e.backtrace.join("\n")}"
49
+ ensure
50
+ instances << instance
51
+ end
52
+ end
53
+ instances.in_groups_of(10000, false) do |block|
54
+ klass.import(block)
55
+ end
56
+ end
57
+
58
+ def get_create_table_dsl(table_name, hash)
59
+ dsl = %Q{
60
+ create_table "#{table_name}" do |t|
61
+ #{get_column_schema(hash).join("\n")}
62
+ t.datetime "created_at"
63
+ t.datetime "updated_at"
64
+ end
65
+ }
66
+ end
67
+
68
+ def get_add_index_dsl(table_name, uniq_columns)
69
+ dsl = %Q{
70
+ add_index(:#{table_name}, #{uniq_columns.map(&:to_sym)}, unique: true)
71
+ }
72
+ end
73
+
74
+ def get_add_column_dsl(table_name, column_name, record)
75
+ dsl = %Q{
76
+ add_column "#{table_name}", "#{column_name}", :#{get_type(column_name, record['column_name'])}
77
+ }
78
+ end
79
+
80
+ def create_table(table_name, data)
81
+ first = data.class == Array ? data.first : data
82
+ if @connection.data_source_exists?(table_name)
83
+ add_column_live(table_name, data)
84
+ return
85
+ end
86
+ create_table_dsl = get_create_table_dsl(table_name, first)
87
+ Arison::Migration.run_dsl(create_table_dsl)
88
+ add_column_live(table_name, data)
89
+ end
90
+
91
+ def parse_json(buffer)
92
+ begin
93
+ data = JSON.parse(buffer)
94
+ rescue => e
95
+ data = []
96
+ buffer.lines.each do |line|
97
+ data << JSON.parse(line)
98
+ end
99
+ end
100
+ data
101
+ end
102
+
103
+ def get_class(table_name)
104
+ define_class(table_name)
105
+ table_name.camelcase.constantize
106
+ end
107
+
108
+ def define_class(table_name)
109
+ klass_sym = table_name.camelcase.to_sym
110
+ if Object.constants.include?(klass_sym)
111
+ Object.send(:remove_const, klass_sym)
112
+ end
113
+ Object.const_set(table_name.camelcase, Class.new(ActiveRecord::Base) do
114
+ self.table_name = table_name
115
+ end)
116
+ end
117
+
118
+ def get_column_schema(hash)
119
+ hash.map do |k, v|
120
+ type = get_type(k, v)
121
+ %Q{t.#{type} "#{k}"} unless type.nil?
122
+ end
123
+ end
124
+
125
+ def get_type(k, v)
126
+ if v.nil?
127
+ %Q{string}
128
+ elsif k =~ /^id$/i
129
+ nil
130
+ elsif v.class == String
131
+ to_time_or_nil(v).nil? ? %Q{string} : %Q{datetime}
132
+ elsif v.class == TrueClass || v.class == FalseClass
133
+ %Q{boolean}
134
+ elsif v.class == Fixnum
135
+ %Q{integer}
136
+ elsif v.class == Float
137
+ %Q{float}
138
+ elsif v.class == Array || v.class == Hash
139
+ %Q{text}
140
+ elsif v.respond_to?(:strftime)
141
+ %Q{datetime}
142
+ end
143
+ end
144
+
145
+ def to_time_or_nil(value)
146
+ return nil if value.slice(0, 4) !~ /^[0-9][0-9][0-9][0-9]/
147
+ begin
148
+ time = value.to_time
149
+ time.to_i >= 0 ? time : nil
150
+ rescue => e
151
+ nil
152
+ end
153
+ end
154
+
155
+ def get_limit_hash(klass)
156
+ columns(klass).inject({}){ |result, column|
157
+ result[column['name']] = column['limit']
158
+ result
159
+ }
160
+ end
161
+
162
+ def add_column_live(table_name, data)
163
+ data.each do |record|
164
+ limits = get_limit_hash(get_class(table_name))
165
+ diff_keys = (record.keys - limits.keys)
166
+
167
+ diff_keys.each do |column|
168
+ add_column_dsl = get_add_column_dsl(table_name, column, record)
169
+ Arison::Migration.run_dsl(add_column_dsl)
170
+ end
171
+ ActiveRecord::Base.establish_connection(@profile)
172
+ end
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,7 @@
1
+ module Arison
2
+ class Migration < ActiveRecord::Migration
3
+ def self.run_dsl(dsl)
4
+ eval dsl
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ module Arison
2
+ # arison version
3
+ VERSION = "0.1.1"
4
+ end
data/lib/arison.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'arison/version'
2
+ require 'arison/core'
3
+ require 'arison/migration'
4
+ require 'arison/cli'
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'arison'
3
+
4
+ describe Arison do
5
+ it "should have a VERSION constant" do
6
+ subject.const_get('VERSION').should_not be_empty
7
+ end
8
+ end
data/spec/cli_spec.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+ require 'arison'
3
+
4
+ describe Arison::CLI do
5
+ before do
6
+ end
7
+
8
+ it "should stdout sample" do
9
+ output = capture_stdout do
10
+ Arison::CLI.start(['sample'])
11
+ end
12
+ output.should == "This is your new task\n"
13
+ end
14
+
15
+ after do
16
+ end
17
+ end
data/spec/core_spec.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+ require 'arison'
3
+
4
+ describe Arison::Core do
5
+ before do
6
+ @core = Core.new
7
+ end
8
+
9
+ it "core not nil" do
10
+ @core.should_not nil
11
+ end
12
+
13
+ after do
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ gem 'rspec', '~> 2.4'
2
+ require 'rspec'
3
+ require 'arison/version'
4
+
5
+ include Arison
6
+
7
+ def capture_stdout
8
+ out = StringIO.new
9
+ $stdout = out
10
+ yield
11
+ return out.string
12
+ ensure
13
+ $stdout = STDOUT
14
+ end
15
+
16
+ def capture_stderr
17
+ out = StringIO.new
18
+ $stderr = out
19
+ yield
20
+ return out.string
21
+ ensure
22
+ $stderr = STDERR
23
+ end
24
+
metadata ADDED
@@ -0,0 +1,237 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: arison
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Hiroshi Toyama
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-02-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.19.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.19.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: pg
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activerecord
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activerecord-import
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.10.1
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.10.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 10.3.2
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 10.3.2
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.4'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.4'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.24.1
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.24.1
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubygems-tasks
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.2'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.2'
167
+ - !ruby/object:Gem::Dependency
168
+ name: yard
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.8'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.8'
181
+ description: postgresql command line interface
182
+ email: toyama0919@gmail.com
183
+ executables:
184
+ - arison
185
+ extensions: []
186
+ extra_rdoc_files: []
187
+ files:
188
+ - ".document"
189
+ - ".gitignore"
190
+ - ".rspec"
191
+ - ".travis.yml"
192
+ - ".yardopts"
193
+ - ChangeLog.md
194
+ - Gemfile
195
+ - LICENSE.txt
196
+ - README.md
197
+ - Rakefile
198
+ - arison.gemspec
199
+ - bin/arison
200
+ - lib/arison.rb
201
+ - lib/arison/cli.rb
202
+ - lib/arison/core.rb
203
+ - lib/arison/migration.rb
204
+ - lib/arison/version.rb
205
+ - spec/arison_spec.rb
206
+ - spec/cli_spec.rb
207
+ - spec/core_spec.rb
208
+ - spec/spec_helper.rb
209
+ homepage: https://github.com/toyama0919/arison
210
+ licenses:
211
+ - MIT
212
+ metadata: {}
213
+ post_install_message:
214
+ rdoc_options: []
215
+ require_paths:
216
+ - lib
217
+ required_ruby_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ required_rubygems_version: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - ">="
225
+ - !ruby/object:Gem::Version
226
+ version: '0'
227
+ requirements: []
228
+ rubyforge_project:
229
+ rubygems_version: 2.5.1
230
+ signing_key:
231
+ specification_version: 4
232
+ summary: postgresql command line interface
233
+ test_files:
234
+ - spec/arison_spec.rb
235
+ - spec/cli_spec.rb
236
+ - spec/core_spec.rb
237
+ - spec/spec_helper.rb