csv_rails 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|