csv_rails 0.4.1 → 0.5.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.
- data/README.rdoc +47 -3
- data/lib/csv_rails/active_record.rb +44 -0
- data/lib/csv_rails/array.rb +15 -11
- data/lib/csv_rails/version.rb +1 -1
- data/lib/csv_rails.rb +4 -3
- data/test/csv_rails/active_record_test.rb +91 -0
- data/test/csv_rails/array_test.rb +14 -0
- data/test/dummy/app/controllers/users_controller.rb +4 -4
- data/test/dummy/app/models/group.rb +4 -0
- data/test/dummy/app/models/membership.rb +4 -0
- data/test/dummy/app/models/user.rb +3 -0
- data/test/dummy/config/application.rb +1 -1
- data/test/dummy/config/locales/ja.yml +5 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20120328072253_create_groups.rb +13 -0
- data/test/dummy/db/migrate/20120328072740_create_memberships.rb +14 -0
- data/test/dummy/db/schema.rb +14 -1
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +1436 -0
- data/test/dummy/log/test.log +2322 -0
- data/test/dummy/test/fixtures/groups.yml +7 -0
- data/test/dummy/test/fixtures/memberships.yml +9 -0
- data/test/dummy/test/fixtures/users.yml +12 -5
- data/test/dummy/test/functional/users_controller_test.rb +5 -3
- data/test/dummy/test/unit/group_test.rb +8 -0
- data/test/dummy/test/unit/membership_test.rb +8 -0
- data/test/dummy/test/unit/user_test.rb +0 -67
- data/test/dummy/tmp/pids/server.pid +1 -0
- metadata +29 -8
- data/lib/active_record/acts/csv.rb +0 -42
- data/lib/tasks/csv_rails_tasks.rake +0 -4
@@ -2,10 +2,17 @@
|
|
2
2
|
|
3
3
|
one:
|
4
4
|
name: よしだあつし
|
5
|
-
age:
|
6
|
-
secret:
|
5
|
+
age: 29
|
6
|
+
secret: "I like curry and rice."
|
7
7
|
|
8
8
|
two:
|
9
|
-
name:
|
10
|
-
age:
|
11
|
-
secret:
|
9
|
+
name: yalab
|
10
|
+
age: 8
|
11
|
+
secret: "I'm a neet."
|
12
|
+
|
13
|
+
<% 1000.times do |n| %>
|
14
|
+
<%= "#{n}:" %>
|
15
|
+
name: <%= n %>
|
16
|
+
age: <%= n %>
|
17
|
+
secret: <%= n %>
|
18
|
+
<% end %>
|
@@ -5,17 +5,19 @@ class UsersControllerTest < ActionController::TestCase
|
|
5
5
|
setup do
|
6
6
|
User.create(:name => 'yalab', :age => '4', :secret => 'secret')
|
7
7
|
I18n.locale = :ja
|
8
|
-
@
|
8
|
+
@fields = [:id, :name, :age, :"groups.first.name"]
|
9
9
|
end
|
10
|
+
|
10
11
|
test "should get index" do
|
11
12
|
get :index, :format => 'csv'
|
12
|
-
assert_equal @
|
13
|
+
assert_equal User.all.to_csv(fields: @fields, without_header: true), response.body
|
13
14
|
end
|
14
15
|
|
15
16
|
test "should get sjis" do
|
16
17
|
get :sjis, :format => 'csv'
|
17
|
-
assert_equal @
|
18
|
+
assert_equal User.all.to_csv(fields: @fields).encode('SJIS'), response.body
|
18
19
|
end
|
20
|
+
|
19
21
|
teardown do
|
20
22
|
I18n.locale = :en
|
21
23
|
end
|
@@ -1,71 +1,4 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require 'test_helper'
|
3
|
-
require 'csv'
|
4
3
|
class UserTest < ActiveSupport::TestCase
|
5
|
-
setup do
|
6
|
-
@user = User.create(:name => 'yalab', :age => '29', :secret => 'password')
|
7
|
-
end
|
8
|
-
|
9
|
-
test "#to_csv_ary without params" do
|
10
|
-
assert_equal @user.attributes.length, @user.to_csv_ary.length
|
11
|
-
assert_equal @user.attributes.values[0..-2], @user.to_csv_ary[0..-2]
|
12
|
-
end
|
13
|
-
|
14
|
-
test "#to_csv_ary with field params" do
|
15
|
-
fields = [:name, :age]
|
16
|
-
assert_equal fields.map{|f| @user[f] }, @user.to_csv_ary(fields)
|
17
|
-
end
|
18
|
-
|
19
|
-
test "#to_csv_ary use method not a database field" do
|
20
|
-
assert_equal [@user.one], @user.to_csv_ary([:one])
|
21
|
-
end
|
22
|
-
|
23
|
-
test "#updated_at_as_csv" do
|
24
|
-
assert_equal @user.updated_at.strftime("%F %H:%M"), @user.updated_at_as_csv
|
25
|
-
end
|
26
|
-
|
27
|
-
test ".to_csv without params" do
|
28
|
-
csv = CSV.parse(User.to_csv)
|
29
|
-
header = csv.first.map{|f| f.downcase.tr(' ', '_') }
|
30
|
-
header.delete("updated_at")
|
31
|
-
line = csv.last
|
32
|
-
header.each.with_index do |field, index|
|
33
|
-
assert_equal @user[field].to_s, line[index]
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
test ".to_csv can use fields option" do
|
38
|
-
fields = [:id, :name]
|
39
|
-
row = CSV.parse(User.to_csv(:fields => fields)).last
|
40
|
-
assert_equal fields.map{|f| @user[f].to_s }, row
|
41
|
-
end
|
42
|
-
|
43
|
-
test ".to_csv varnish header" do
|
44
|
-
fields = [:id, :name]
|
45
|
-
row = CSV.parse(User.to_csv(:fields => fields, :without_header => true)).first
|
46
|
-
assert_not_equal fields.map{|f| User.human_attribute_name(f) }, row
|
47
|
-
end
|
48
|
-
|
49
|
-
test ".to_csv header use human_attribute_name" do
|
50
|
-
fields = [:id, :name, :one]
|
51
|
-
header = CSV.parse(User.to_csv(:fields => fields)).first
|
52
|
-
assert_equal fields.map{|f| User.human_attribute_name(f) }, header
|
53
|
-
end
|
54
|
-
|
55
|
-
test ".to_csv with scoped" do
|
56
|
-
User.create(:name => 'atsushi', :age => 45, :secret => 'none')
|
57
|
-
assert_equal 1, CSV.parse(User.where("age > 39").to_csv(:without_header => true)).length
|
58
|
-
end
|
59
|
-
|
60
|
-
test ".to_csv accept encoding" do
|
61
|
-
I18n.locale = :ja
|
62
|
-
assert_equal "名前".encode('SJIS'), CSV.parse(User.to_csv(:fields => [:name], :encoding => 'SJIS')).first.first
|
63
|
-
I18n.locale = :en
|
64
|
-
end
|
65
|
-
|
66
|
-
test "Array.to_csv accept encoding" do
|
67
|
-
I18n.locale = :ja
|
68
|
-
assert_equal "名前".encode('SJIS'), CSV.parse(User.all.to_csv(:fields => [:name], :encoding => 'SJIS')).first.first
|
69
|
-
I18n.locale = :en
|
70
|
-
end
|
71
4
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
6831
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csv_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &72139610 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *72139610
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &69015590 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *69015590
|
36
36
|
description: The csv_rails gem provides a download csv file with rails.
|
37
37
|
email:
|
38
38
|
- rudeboyjet@gmail.com
|
@@ -42,9 +42,8 @@ extra_rdoc_files: []
|
|
42
42
|
files:
|
43
43
|
- lib/csv_rails/array.rb
|
44
44
|
- lib/csv_rails/version.rb
|
45
|
+
- lib/csv_rails/active_record.rb
|
45
46
|
- lib/csv_rails.rb
|
46
|
-
- lib/tasks/csv_rails_tasks.rake
|
47
|
-
- lib/active_record/acts/csv.rb
|
48
47
|
- MIT-LICENSE
|
49
48
|
- Rakefile
|
50
49
|
- README.rdoc
|
@@ -70,11 +69,18 @@ files:
|
|
70
69
|
- test/dummy/public/404.html
|
71
70
|
- test/dummy/public/500.html
|
72
71
|
- test/dummy/doc/README_FOR_APP
|
72
|
+
- test/dummy/tmp/pids/server.pid
|
73
|
+
- test/dummy/test/fixtures/groups.yml
|
74
|
+
- test/dummy/test/fixtures/memberships.yml
|
73
75
|
- test/dummy/test/fixtures/users.yml
|
76
|
+
- test/dummy/test/unit/group_test.rb
|
77
|
+
- test/dummy/test/unit/membership_test.rb
|
74
78
|
- test/dummy/test/unit/user_test.rb
|
75
79
|
- test/dummy/test/unit/helpers/users_helper_test.rb
|
76
80
|
- test/dummy/test/functional/users_controller_test.rb
|
77
81
|
- test/dummy/db/migrate/20120323112247_create_users.rb
|
82
|
+
- test/dummy/db/migrate/20120328072253_create_groups.rb
|
83
|
+
- test/dummy/db/migrate/20120328072740_create_memberships.rb
|
78
84
|
- test/dummy/db/schema.rb
|
79
85
|
- test/dummy/db/development.sqlite3
|
80
86
|
- test/dummy/db/test.sqlite3
|
@@ -91,10 +97,14 @@ files:
|
|
91
97
|
- test/dummy/app/controllers/users_controller.rb
|
92
98
|
- test/dummy/app/controllers/application_controller.rb
|
93
99
|
- test/dummy/app/models/user.rb
|
100
|
+
- test/dummy/app/models/group.rb
|
101
|
+
- test/dummy/app/models/membership.rb
|
94
102
|
- test/dummy/app/helpers/users_helper.rb
|
95
103
|
- test/dummy/app/helpers/application_helper.rb
|
96
104
|
- test/dummy/app/views/users/index.html.erb
|
97
105
|
- test/dummy/app/views/layouts/application.html.erb
|
106
|
+
- test/csv_rails/array_test.rb
|
107
|
+
- test/csv_rails/active_record_test.rb
|
98
108
|
- test/test_helper.rb
|
99
109
|
- test/csv_rails_test.rb
|
100
110
|
homepage: https://github.com/yalab/csv_rails
|
@@ -145,11 +155,18 @@ test_files:
|
|
145
155
|
- test/dummy/public/404.html
|
146
156
|
- test/dummy/public/500.html
|
147
157
|
- test/dummy/doc/README_FOR_APP
|
158
|
+
- test/dummy/tmp/pids/server.pid
|
159
|
+
- test/dummy/test/fixtures/groups.yml
|
160
|
+
- test/dummy/test/fixtures/memberships.yml
|
148
161
|
- test/dummy/test/fixtures/users.yml
|
162
|
+
- test/dummy/test/unit/group_test.rb
|
163
|
+
- test/dummy/test/unit/membership_test.rb
|
149
164
|
- test/dummy/test/unit/user_test.rb
|
150
165
|
- test/dummy/test/unit/helpers/users_helper_test.rb
|
151
166
|
- test/dummy/test/functional/users_controller_test.rb
|
152
167
|
- test/dummy/db/migrate/20120323112247_create_users.rb
|
168
|
+
- test/dummy/db/migrate/20120328072253_create_groups.rb
|
169
|
+
- test/dummy/db/migrate/20120328072740_create_memberships.rb
|
153
170
|
- test/dummy/db/schema.rb
|
154
171
|
- test/dummy/db/development.sqlite3
|
155
172
|
- test/dummy/db/test.sqlite3
|
@@ -166,9 +183,13 @@ test_files:
|
|
166
183
|
- test/dummy/app/controllers/users_controller.rb
|
167
184
|
- test/dummy/app/controllers/application_controller.rb
|
168
185
|
- test/dummy/app/models/user.rb
|
186
|
+
- test/dummy/app/models/group.rb
|
187
|
+
- test/dummy/app/models/membership.rb
|
169
188
|
- test/dummy/app/helpers/users_helper.rb
|
170
189
|
- test/dummy/app/helpers/application_helper.rb
|
171
190
|
- test/dummy/app/views/users/index.html.erb
|
172
191
|
- test/dummy/app/views/layouts/application.html.erb
|
192
|
+
- test/csv_rails/array_test.rb
|
193
|
+
- test/csv_rails/active_record_test.rb
|
173
194
|
- test/test_helper.rb
|
174
195
|
- test/csv_rails_test.rb
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'csv'
|
2
|
-
module ActiveRecord
|
3
|
-
module Acts
|
4
|
-
module Csv
|
5
|
-
def self.included(base)
|
6
|
-
base.extend ClassMethods
|
7
|
-
::ActiveRecord::Relation.send(:include, ClassMethods)
|
8
|
-
base.send(:include, InstanceMethods)
|
9
|
-
end
|
10
|
-
|
11
|
-
module ClassMethods
|
12
|
-
def to_csv(opts={})
|
13
|
-
fields = if opts[:fields]
|
14
|
-
opts.delete(:fields)
|
15
|
-
elsif respond_to?(:attribute_names)
|
16
|
-
attribute_names
|
17
|
-
elsif self.is_a?(ActiveRecord::Relation)
|
18
|
-
@klass.new.attribute_names
|
19
|
-
else
|
20
|
-
new.attribute_names
|
21
|
-
end
|
22
|
-
csv = CSV.generate do |_csv|
|
23
|
-
_csv << fields.map{|f| human_attribute_name(f) } unless opts[:without_header]
|
24
|
-
all.each{|row| _csv << row.to_csv_ary(fields) }
|
25
|
-
end
|
26
|
-
opts[:encoding] ? csv.encode(opts[:encoding]) : csv
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
module InstanceMethods
|
31
|
-
def to_csv_ary(fields=nil, opts={})
|
32
|
-
fields = attribute_names unless fields
|
33
|
-
fields.map{|field|
|
34
|
-
convert_method = "#{field}_as_csv"
|
35
|
-
method = respond_to?(convert_method) ? convert_method : field
|
36
|
-
send(method)
|
37
|
-
}
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|