spreadsheetable 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.rspec +2 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +6 -0
- data/lib/spreadsheetable.rb +59 -0
- data/lib/spreadsheetable/version.rb +3 -0
- data/spec/ja.yml +11 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/spreadsheetable_spec.rb +169 -0
- data/spec/support/database_cleaner.rb +15 -0
- data/spec/support/test_models.rb +43 -0
- data/spreadsheetable.gemspec +31 -0
- metadata +190 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a2d829d9bb04ab9e70a6478bc2ef70a3f27bfd68
|
4
|
+
data.tar.gz: ce21a8b7bb03d81c4e28bcfda7cb453f2f647ddf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ac97d21be0271c02fcb06d8580369c3883e81a8b1f3f122f4c0708c73a2fac9959226b30c9fbaa9eb27e1143aa22dc9e2e8e883c1563412ffb42d2a75789f8ac
|
7
|
+
data.tar.gz: a9996e42f3935e6adacc3df2fc14b36f60ee89cba596dd3ca6d89bb1c1d59b7b5c11e016736b03bd856e1970e92138b709439e2cdb341fa766ff9b5ece596c9b
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
|
19
|
+
*#*
|
20
|
+
.DS_Store
|
21
|
+
.rvmrc
|
22
|
+
.ruby-version
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Yasuhiko Maeda
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Spreadsheetable[](https://travis-ci.org/dongoon/spreadsheetable)
|
2
|
+
|
3
|
+
A scope(ActiveRecord::Relation) and a array of active_record are able to be spreadsheet with this module.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'spreadsheetable'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
scope = SomeTable.all #scope or array
|
19
|
+
scope.sheet_columns = %w(id name other)
|
20
|
+
xls_file = scope.xls # or scope.to_spreadsheet
|
21
|
+
```
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it ( http://github.com/dongoon/spreadsheetable/fork )
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require "spreadsheetable/version"
|
2
|
+
require 'spreadsheet'
|
3
|
+
|
4
|
+
module Spreadsheetable
|
5
|
+
attr_reader :sheet_columns
|
6
|
+
|
7
|
+
def self.extend_object(base)
|
8
|
+
raise TypeError.new unless base.is_a?(ActiveRecord::Relation) || (base.is_a?(Array) && base.first.is_a?(ActiveRecord::Base))
|
9
|
+
base.instance_variable_set(:@sheet_columns, [])
|
10
|
+
super
|
11
|
+
end
|
12
|
+
|
13
|
+
def sheet_columns= cols
|
14
|
+
raise TypeError unless cols.is_a?(Array)
|
15
|
+
@sheet_columns = cols
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_spreadsheet
|
19
|
+
book = ::Spreadsheet::Workbook.new
|
20
|
+
sheet = book.create_worksheet()
|
21
|
+
|
22
|
+
rows = [_sheet_header]
|
23
|
+
rows += self.collect{|_row| _to_row(_row)}
|
24
|
+
rows.each_with_index do |_row, i|
|
25
|
+
sheet.row(i).concat _row
|
26
|
+
end
|
27
|
+
|
28
|
+
tmpfile = Tempfile.new ["excel_tmp", ".xls"]
|
29
|
+
book.write tmpfile
|
30
|
+
|
31
|
+
tmpfile
|
32
|
+
end
|
33
|
+
|
34
|
+
def xls
|
35
|
+
to_spreadsheet
|
36
|
+
end
|
37
|
+
|
38
|
+
def _sheet_header
|
39
|
+
default = self.is_a?(ActiveRecord::Relation) ? self.klass : self.first.class
|
40
|
+
|
41
|
+
self.sheet_columns.collect{|col|
|
42
|
+
names = col.to_s.split(".")
|
43
|
+
if names.count == 1
|
44
|
+
model = default
|
45
|
+
else
|
46
|
+
model = names[names.count - 2].classify.constantize
|
47
|
+
end
|
48
|
+
model.human_attribute_name names.last
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
def _to_row record
|
53
|
+
self.sheet_columns.collect{|c|
|
54
|
+
eval("record." + c) rescue nil
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
private :_sheet_header, :_to_row
|
59
|
+
end
|
data/spec/ja.yml
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Spreadsheetable do
|
6
|
+
I18n.load_path += Dir[ File.join(File.dirname(__FILE__), '*.yml') ]
|
7
|
+
I18n.default_locale = :ja
|
8
|
+
I18n.enforce_available_locales = false
|
9
|
+
|
10
|
+
before{
|
11
|
+
3.times{ FactoryGirl.create :user }
|
12
|
+
}
|
13
|
+
let(:users){ User.all }
|
14
|
+
let(:sheet_users){ users.extend Spreadsheetable }
|
15
|
+
|
16
|
+
it 'should have a version number' do
|
17
|
+
Spreadsheetable::VERSION.should_not be_nil
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "initialize" do
|
21
|
+
|
22
|
+
describe "#sheet_columns" do
|
23
|
+
example{ expect(sheet_users.sheet_columns).to be_an_instance_of(Array) }
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "extendable object type" do
|
27
|
+
subject{ users.extend Spreadsheetable }
|
28
|
+
|
29
|
+
context "ActiveRecord::Relation" do
|
30
|
+
let(:users){ User.unscoped }
|
31
|
+
|
32
|
+
example{ expect{subject}.to_not raise_error }
|
33
|
+
end
|
34
|
+
|
35
|
+
context "Array of active_record" do
|
36
|
+
let(:users){ o = User.all.to_a }
|
37
|
+
before{ expect(sheet_users).to be_an_instance_of(Array) }
|
38
|
+
|
39
|
+
example{ expect{ subject }.to_not raise_error }
|
40
|
+
end
|
41
|
+
|
42
|
+
context "other" do
|
43
|
+
let(:users){ [ Object.new ] }
|
44
|
+
|
45
|
+
example{ expect{ subject }.to raise_error }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#sheet_columns=" do
|
51
|
+
subject{ sheet_users.sheet_columns = set_columns }
|
52
|
+
|
53
|
+
context "set array instance" do
|
54
|
+
let(:set_columns){ %w(a b c) }
|
55
|
+
|
56
|
+
example{ expect{ subject }.to_not raise_error }
|
57
|
+
example "should over write sheet_columns" do
|
58
|
+
expect(sheet_users.sheet_columns).to eq([])
|
59
|
+
subject
|
60
|
+
expect(sheet_users.sheet_columns).to eq(set_columns)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "set NOT array instance" do
|
65
|
+
let(:set_columns){ "a b c" }
|
66
|
+
|
67
|
+
example{ expect{ subject }.to raise_error }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "#to_spreadsheet" do
|
72
|
+
before{ sheet_users.sheet_columns += %w(id organization.name name email) }
|
73
|
+
|
74
|
+
shared_examples_for "to_spreadsheet" do
|
75
|
+
subject{ sheet_users.to_spreadsheet }
|
76
|
+
|
77
|
+
example{ expect(subject).to be_a(Tempfile) }
|
78
|
+
|
79
|
+
example "header row is created by #_sheet_header" do
|
80
|
+
expect(sheet_users).to receive(:_sheet_header).and_call_original.once
|
81
|
+
book = Spreadsheet.open(subject.path)
|
82
|
+
expect(book.worksheets.count).to eq(1)
|
83
|
+
sheet = book.worksheets.first
|
84
|
+
expect(sheet.rows.first.to_a).to eq(%w(Id 組織名 氏名 メールアドレス))
|
85
|
+
end
|
86
|
+
|
87
|
+
example "data row is created by #_to_row" do
|
88
|
+
expect(sheet_users).to receive(:_to_row).and_call_original.exactly(sheet_users.count).times
|
89
|
+
book = Spreadsheet.open(subject.path)
|
90
|
+
sheet = book.worksheets.first
|
91
|
+
expect(sheet.rows.count).to eq(sheet_users.count + 1)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context "ActiveRecord::Relation" do
|
96
|
+
before{ expect(sheet_users.is_a?(ActiveRecord::Relation)).to eq(true) }
|
97
|
+
|
98
|
+
it_should_behave_like "to_spreadsheet"
|
99
|
+
end
|
100
|
+
|
101
|
+
context "Array of active_record" do
|
102
|
+
let(:users){ o = User.all.to_a }
|
103
|
+
before{ expect(sheet_users).to be_an_instance_of(Array) }
|
104
|
+
|
105
|
+
it_should_behave_like "to_spreadsheet"
|
106
|
+
end
|
107
|
+
|
108
|
+
describe "#xls" do
|
109
|
+
subject{ sheet_users.xls }
|
110
|
+
example "#xls is alias of #to_spreadsheet" do
|
111
|
+
expect(sheet_users).to receive(:to_spreadsheet).once
|
112
|
+
subject
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "#_sheet_header" do
|
117
|
+
subject{ sheet_users.send :_sheet_header }
|
118
|
+
|
119
|
+
shared_examples_for "_sheet_header" do
|
120
|
+
example "should be generated with sheet_columns config" do
|
121
|
+
expect(subject.length).to eq(sheet_users.sheet_columns.length)
|
122
|
+
end
|
123
|
+
|
124
|
+
example "column header is resolved by I18n" do
|
125
|
+
expect(subject).to eq(%w(Id 組織名 氏名 メールアドレス))
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
context "ActiveRecord::Relation" do
|
130
|
+
before{ expect(sheet_users.is_a?(ActiveRecord::Relation)).to eq(true) }
|
131
|
+
|
132
|
+
it_should_behave_like "_sheet_header"
|
133
|
+
end
|
134
|
+
|
135
|
+
context "Array of active_record" do
|
136
|
+
let(:users){ o = User.all.to_a }
|
137
|
+
before{ expect(sheet_users).to be_an_instance_of(Array) }
|
138
|
+
|
139
|
+
it_should_behave_like "_sheet_header"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "#_to_row" do
|
144
|
+
subject{ sheet_users.send(:_to_row, row) }
|
145
|
+
let(:row){ sheet_users.first }
|
146
|
+
|
147
|
+
context "sheet_columns is NOT set any column" do
|
148
|
+
before{ sheet_users.sheet_columns = [] }
|
149
|
+
|
150
|
+
example{expect(subject).to eq []}
|
151
|
+
end
|
152
|
+
|
153
|
+
context "sheet_columns is set some column" do
|
154
|
+
example "return a array of set column values" do
|
155
|
+
expect(subject).to match_array([row.id, row.organization.name, row.name, row.email])
|
156
|
+
end
|
157
|
+
|
158
|
+
context "sheet_culumns include invalid column" do
|
159
|
+
before{ sheet_users.sheet_columns << "hoge" }
|
160
|
+
example{ expect{subject}.to_not raise_error }
|
161
|
+
|
162
|
+
example "invalid column value is nil" do
|
163
|
+
expect(subject).to match_array([row.id, row.organization.name, row.name, row.email, nil])
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'database_cleaner'
|
2
|
+
|
3
|
+
DatabaseCleaner[:active_record].strategy = :transaction if defined? ActiveRecord
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.before :suite do
|
7
|
+
DatabaseCleaner.clean_with :truncation
|
8
|
+
end
|
9
|
+
config.before :each do
|
10
|
+
DatabaseCleaner.start
|
11
|
+
end
|
12
|
+
config.after :each do
|
13
|
+
DatabaseCleaner.clean
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
ActiveRecord::Base.establish_connection( :adapter => 'sqlite3', :database => ':memory:')
|
3
|
+
|
4
|
+
class CreateTestTables < ActiveRecord::Migration
|
5
|
+
def self.up
|
6
|
+
create_table :users do |t|
|
7
|
+
t.string :email
|
8
|
+
t.string :name
|
9
|
+
t.integer :rank
|
10
|
+
t.integer :organization_id
|
11
|
+
t.datetime :registered_at
|
12
|
+
end
|
13
|
+
|
14
|
+
create_table :organizations do |t|
|
15
|
+
t.string :name
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
ActiveRecord::Migration.verbose = false
|
21
|
+
CreateTestTables.up
|
22
|
+
|
23
|
+
|
24
|
+
class User < ActiveRecord::Base
|
25
|
+
belongs_to :organization
|
26
|
+
end
|
27
|
+
|
28
|
+
class Organization < ActiveRecord::Base
|
29
|
+
has_many :users
|
30
|
+
end
|
31
|
+
|
32
|
+
FactoryGirl.define do
|
33
|
+
factory :organization do
|
34
|
+
sequence(:name){ |n| "The group No.#{n}" }
|
35
|
+
end
|
36
|
+
|
37
|
+
factory :user do
|
38
|
+
sequence(:name){ |n| "No.#{n} user" }
|
39
|
+
sequence(:email){ |n| "user#{n}@example.com" }
|
40
|
+
registered_at Time.now
|
41
|
+
organization
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'spreadsheetable/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "spreadsheetable"
|
8
|
+
spec.version = Spreadsheetable::VERSION
|
9
|
+
spec.authors = ["Yasuhiko Maeda"]
|
10
|
+
spec.email = ["y.maeda@dongoon.jp"]
|
11
|
+
spec.summary = %q{ActiveRecord::Relation or array of active_records to SpreadSheet}
|
12
|
+
spec.description = %q{This module implement [to_spreadsheet | xls] to ActiveRecord::Relation}
|
13
|
+
spec.homepage = "https://github.com/dongoon/spreadsheetable"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_development_dependency "sqlite3-ruby"
|
25
|
+
spec.add_development_dependency "database_cleaner"
|
26
|
+
spec.add_development_dependency "factory_girl_rails"
|
27
|
+
|
28
|
+
spec.add_runtime_dependency "activerecord", ">= 3.0.0"
|
29
|
+
spec.add_runtime_dependency "arel", ">= 3.0.0"
|
30
|
+
spec.add_runtime_dependency "spreadsheet", "~> 0.9.7"
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,190 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: spreadsheetable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Yasuhiko Maeda
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-04-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
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: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
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: sqlite3-ruby
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
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: database_cleaner
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
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: factory_girl_rails
|
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: activerecord
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.0.0
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 3.0.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: arel
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 3.0.0
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 3.0.0
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: spreadsheet
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.9.7
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.9.7
|
139
|
+
description: This module implement [to_spreadsheet | xls] to ActiveRecord::Relation
|
140
|
+
email:
|
141
|
+
- y.maeda@dongoon.jp
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- ".gitignore"
|
147
|
+
- ".rspec"
|
148
|
+
- ".travis.yml"
|
149
|
+
- Gemfile
|
150
|
+
- LICENSE.txt
|
151
|
+
- README.md
|
152
|
+
- Rakefile
|
153
|
+
- lib/spreadsheetable.rb
|
154
|
+
- lib/spreadsheetable/version.rb
|
155
|
+
- spec/ja.yml
|
156
|
+
- spec/spec_helper.rb
|
157
|
+
- spec/spreadsheetable_spec.rb
|
158
|
+
- spec/support/database_cleaner.rb
|
159
|
+
- spec/support/test_models.rb
|
160
|
+
- spreadsheetable.gemspec
|
161
|
+
homepage: https://github.com/dongoon/spreadsheetable
|
162
|
+
licenses:
|
163
|
+
- MIT
|
164
|
+
metadata: {}
|
165
|
+
post_install_message:
|
166
|
+
rdoc_options: []
|
167
|
+
require_paths:
|
168
|
+
- lib
|
169
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - ">="
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0'
|
179
|
+
requirements: []
|
180
|
+
rubyforge_project:
|
181
|
+
rubygems_version: 2.2.2
|
182
|
+
signing_key:
|
183
|
+
specification_version: 4
|
184
|
+
summary: ActiveRecord::Relation or array of active_records to SpreadSheet
|
185
|
+
test_files:
|
186
|
+
- spec/ja.yml
|
187
|
+
- spec/spec_helper.rb
|
188
|
+
- spec/spreadsheetable_spec.rb
|
189
|
+
- spec/support/database_cleaner.rb
|
190
|
+
- spec/support/test_models.rb
|