paperclip 4.2.2 → 5.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 +4 -4
- data/.hound.yml +1066 -0
- data/.rubocop.yml +1 -0
- data/.travis.yml +18 -15
- data/Appraisals +20 -12
- data/CONTRIBUTING.md +19 -8
- data/Gemfile +4 -9
- data/LICENSE +1 -1
- data/NEWS +101 -31
- data/README.md +243 -159
- data/RELEASING.md +17 -0
- data/Rakefile +1 -1
- data/UPGRADING +12 -9
- data/features/basic_integration.feature +8 -4
- data/features/migration.feature +0 -24
- data/features/step_definitions/attachment_steps.rb +27 -21
- data/features/step_definitions/html_steps.rb +2 -2
- data/features/step_definitions/rails_steps.rb +11 -17
- data/features/step_definitions/s3_steps.rb +2 -2
- data/features/step_definitions/web_steps.rb +1 -103
- data/features/support/file_helpers.rb +2 -2
- data/gemfiles/4.2.awsv2.0.gemfile +17 -0
- data/gemfiles/4.2.awsv2.1.gemfile +17 -0
- data/gemfiles/{4.1.gemfile → 4.2.awsv2.gemfile} +4 -3
- data/gemfiles/5.0.awsv2.0.gemfile +17 -0
- data/gemfiles/5.0.awsv2.1.gemfile +17 -0
- data/gemfiles/{4.2.gemfile → 5.0.awsv2.gemfile} +4 -3
- data/lib/paperclip/attachment.rb +19 -16
- data/lib/paperclip/attachment_registry.rb +3 -2
- data/lib/paperclip/callbacks.rb +8 -6
- data/lib/paperclip/content_type_detector.rb +27 -11
- data/lib/paperclip/errors.rb +3 -1
- data/lib/paperclip/file_command_content_type_detector.rb +6 -8
- data/lib/paperclip/geometry_parser_factory.rb +1 -1
- data/lib/paperclip/glue.rb +1 -1
- data/lib/paperclip/has_attached_file.rb +9 -2
- data/lib/paperclip/helpers.rb +14 -10
- data/lib/paperclip/interpolations/plural_cache.rb +6 -5
- data/lib/paperclip/interpolations.rb +18 -13
- data/lib/paperclip/io_adapters/abstract_adapter.rb +1 -0
- data/lib/paperclip/io_adapters/http_url_proxy_adapter.rb +1 -1
- data/lib/paperclip/io_adapters/uri_adapter.rb +3 -1
- data/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +4 -4
- data/lib/paperclip/media_type_spoof_detector.rb +2 -2
- data/lib/paperclip/rails_environment.rb +25 -0
- data/lib/paperclip/schema.rb +3 -9
- data/lib/paperclip/storage/fog.rb +21 -12
- data/lib/paperclip/storage/s3.rb +51 -50
- data/lib/paperclip/thumbnail.rb +2 -3
- data/lib/paperclip/validators/attachment_size_validator.rb +1 -7
- data/lib/paperclip/version.rb +3 -1
- data/lib/paperclip.rb +15 -4
- data/lib/tasks/paperclip.rake +17 -1
- data/paperclip.gemspec +18 -15
- data/spec/paperclip/attachment_definitions_spec.rb +1 -1
- data/spec/paperclip/attachment_processing_spec.rb +2 -4
- data/spec/paperclip/attachment_registry_spec.rb +84 -13
- data/spec/paperclip/attachment_spec.rb +91 -31
- data/spec/paperclip/content_type_detector_spec.rb +8 -1
- data/spec/paperclip/file_command_content_type_detector_spec.rb +0 -1
- data/spec/paperclip/geometry_spec.rb +1 -1
- data/spec/paperclip/glue_spec.rb +44 -0
- data/spec/paperclip/has_attached_file_spec.rb +24 -8
- data/spec/paperclip/integration_spec.rb +4 -3
- data/spec/paperclip/interpolations_spec.rb +16 -13
- data/spec/paperclip/io_adapters/abstract_adapter_spec.rb +2 -1
- data/spec/paperclip/io_adapters/file_adapter_spec.rb +4 -1
- data/spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb +12 -0
- data/spec/paperclip/io_adapters/stringio_adapter_spec.rb +4 -0
- data/spec/paperclip/io_adapters/uri_adapter_spec.rb +27 -0
- data/spec/paperclip/matchers/validate_attachment_content_type_matcher_spec.rb +10 -0
- data/spec/paperclip/media_type_spoof_detector_spec.rb +34 -11
- data/spec/paperclip/paperclip_spec.rb +4 -29
- data/spec/paperclip/plural_cache_spec.rb +17 -16
- data/spec/paperclip/rails_environment_spec.rb +33 -0
- data/spec/paperclip/storage/fog_spec.rb +42 -3
- data/spec/paperclip/storage/s3_live_spec.rb +8 -4
- data/spec/paperclip/storage/s3_spec.rb +255 -180
- data/spec/paperclip/tempfile_factory_spec.rb +4 -0
- data/spec/paperclip/thumbnail_spec.rb +16 -0
- data/spec/paperclip/url_generator_spec.rb +1 -1
- data/spec/paperclip/validators/attachment_size_validator_spec.rb +26 -20
- data/spec/paperclip/validators_spec.rb +3 -3
- data/spec/spec_helper.rb +6 -1
- data/spec/support/assertions.rb +7 -0
- data/spec/support/fake_model.rb +4 -0
- data/spec/support/fixtures/empty.xlsx +0 -0
- data/spec/support/matchers/have_column.rb +11 -2
- data/spec/support/model_reconstruction.rb +9 -1
- data/spec/support/reporting.rb +11 -0
- metadata +105 -54
- data/RUNNING_TESTS.md +0 -4
- data/cucumber/paperclip_steps.rb +0 -6
- data/gemfiles/3.2.gemfile +0 -19
- data/gemfiles/4.0.gemfile +0 -19
- data/lib/paperclip/locales/de.yml +0 -18
- data/lib/paperclip/locales/es.yml +0 -18
- data/lib/paperclip/locales/ja.yml +0 -18
- data/lib/paperclip/locales/pt-BR.yml +0 -18
- data/lib/paperclip/locales/zh-CN.yml +0 -18
- data/lib/paperclip/locales/zh-HK.yml +0 -18
- data/lib/paperclip/locales/zh-TW.yml +0 -18
- data/spec/support/mock_model.rb +0 -2
- data/spec/support/rails_helpers.rb +0 -7
data/RELEASING.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Releasing paperclip
|
|
2
|
+
|
|
3
|
+
1. Update `lib/paperclip/version.rb` file accordingly.
|
|
4
|
+
2. Update `NEWS` to reflect the changes since last release.
|
|
5
|
+
3. Commit changes. There shouldn’t be code changes, and thus CI doesn’t need to
|
|
6
|
+
run, you can then add “[ci skip]” to the commit message.
|
|
7
|
+
4. Tag the release: `git tag -m 'vVERSION' vVERSION`
|
|
8
|
+
5. Push changes: `git push --tags`
|
|
9
|
+
6. Build and publish the gem:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
gem build paperclip.gemspec
|
|
13
|
+
gem push paperclip-VERSION.gem
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
7. Announce the new release, making sure to say “thank you” to the contributors
|
|
17
|
+
who helped shape this version.
|
data/Rakefile
CHANGED
data/UPGRADING
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
##################################################
|
|
2
|
-
# NOTE FOR UPGRADING FROM
|
|
2
|
+
# NOTE FOR UPGRADING FROM 4.3.0 OR EARLIER #
|
|
3
3
|
##################################################
|
|
4
4
|
|
|
5
|
-
Paperclip
|
|
6
|
-
path. This will help to prevent attachment name clashes when you have
|
|
7
|
-
multiple attachments with the same name. If you didn't alter your
|
|
8
|
-
attachment's path and are using Paperclip's default, you'll have to add
|
|
9
|
-
`:path` and `:url` to your `has_attached_file` definition. For example:
|
|
5
|
+
Paperclip is now compatible with aws-sdk >= 2.0.0.
|
|
10
6
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
:url => "/system/:attachment/:id/:style/:filename"
|
|
7
|
+
If you are using S3 storage, aws-sdk >= 2.0.0 requires you to make a few small
|
|
8
|
+
changes:
|
|
14
9
|
|
|
10
|
+
* You must set the `s3_region`
|
|
11
|
+
* If you are explicitly setting permissions anywhere, such as in an initializer,
|
|
12
|
+
note that the format of the permissions changed from using an underscore to
|
|
13
|
+
using a hyphen. For example, `:public_read` needs to be changed to
|
|
14
|
+
`public-read`.
|
|
15
|
+
|
|
16
|
+
For a walkthrough of upgrading from 4 to 5 and aws-sdk >= 2.0 you can watch
|
|
17
|
+
http://rubythursday.com/episodes/ruby-snack-27-upgrade-paperclip-and-aws-sdk-in-prep-for-rails-5
|
|
@@ -12,17 +12,20 @@ Feature: Rails integration
|
|
|
12
12
|
Scenario: Configure defaults for all attachments through Railtie
|
|
13
13
|
Given I add this snippet to config/application.rb:
|
|
14
14
|
"""
|
|
15
|
-
config.paperclip_defaults = {
|
|
15
|
+
config.paperclip_defaults = {
|
|
16
|
+
:url => "/paperclip/custom/:attachment/:style/:filename",
|
|
17
|
+
:validate_media_type => false
|
|
18
|
+
}
|
|
16
19
|
"""
|
|
17
20
|
And I attach :attachment
|
|
18
21
|
And I start the rails application
|
|
19
22
|
When I go to the new user page
|
|
20
23
|
And I fill in "Name" with "something"
|
|
21
|
-
And I attach the file "spec/support/fixtures/
|
|
24
|
+
And I attach the file "spec/support/fixtures/animated.unknown" to "Attachment"
|
|
22
25
|
And I press "Submit"
|
|
23
26
|
Then I should see "Name: something"
|
|
24
|
-
And I should see an image with a path of "/paperclip/custom/attachments/original/
|
|
25
|
-
And the file at "/paperclip/custom/attachments/original/
|
|
27
|
+
And I should see an image with a path of "/paperclip/custom/attachments/original/animated.unknown"
|
|
28
|
+
And the file at "/paperclip/custom/attachments/original/animated.unknown" should be the same as "spec/support/fixtures/animated.unknown"
|
|
26
29
|
|
|
27
30
|
Scenario: Add custom processors
|
|
28
31
|
Given I add a "test" processor in "lib/paperclip"
|
|
@@ -66,6 +69,7 @@ Feature: Rails integration
|
|
|
66
69
|
bucket: paperclip
|
|
67
70
|
access_key_id: access_key
|
|
68
71
|
secret_access_key: secret_key
|
|
72
|
+
s3_region: us-west-2
|
|
69
73
|
"""
|
|
70
74
|
And I start the rails application
|
|
71
75
|
When I go to the new user page
|
data/features/migration.feature
CHANGED
|
@@ -68,27 +68,3 @@ Feature: Migration
|
|
|
68
68
|
|
|
69
69
|
When I rollback a migration
|
|
70
70
|
Then I should not have attachment columns for "avatar"
|
|
71
|
-
|
|
72
|
-
Scenario: Rails 3.2 change method
|
|
73
|
-
Given I am using Rails newer than 3.1
|
|
74
|
-
When I write to "db/migrate/01_create_users.rb" with:
|
|
75
|
-
"""
|
|
76
|
-
class CreateUsers < ActiveRecord::Migration
|
|
77
|
-
def self.up
|
|
78
|
-
create_table :users
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
"""
|
|
82
|
-
When I write to "db/migrate/02_add_attachment_to_users.rb" with:
|
|
83
|
-
"""
|
|
84
|
-
class AddAttachmentToUsers < ActiveRecord::Migration
|
|
85
|
-
def change
|
|
86
|
-
add_attachment :users, :avatar
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
"""
|
|
90
|
-
And I run a migration
|
|
91
|
-
Then I should have attachment columns for "avatar"
|
|
92
|
-
|
|
93
|
-
When I rollback a migration
|
|
94
|
-
Then I should not have attachment columns for "avatar"
|
|
@@ -10,7 +10,7 @@ end
|
|
|
10
10
|
World(AttachmentHelpers)
|
|
11
11
|
|
|
12
12
|
When /^I modify my attachment definition to:$/ do |definition|
|
|
13
|
-
content =
|
|
13
|
+
content = cd(".") { File.read("app/models/user.rb") }
|
|
14
14
|
name = content[/has_attached_file :\w+/][/:\w+/]
|
|
15
15
|
content.gsub!(/has_attached_file.+end/m, <<-FILE)
|
|
16
16
|
#{definition}
|
|
@@ -19,7 +19,7 @@ When /^I modify my attachment definition to:$/ do |definition|
|
|
|
19
19
|
FILE
|
|
20
20
|
|
|
21
21
|
write_file "app/models/user.rb", content
|
|
22
|
-
|
|
22
|
+
cd(".") { FileUtils.rm_rf ".rbx" }
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
When /^I upload the fixture "([^"]*)"$/ do |filename|
|
|
@@ -27,20 +27,20 @@ When /^I upload the fixture "([^"]*)"$/ do |filename|
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
Then /^the attachment "([^"]*)" should have a dimension of (\d+x\d+)$/ do |filename, dimension|
|
|
30
|
-
|
|
30
|
+
cd(".") do
|
|
31
31
|
geometry = `identify -format "%wx%h" "#{attachment_path(filename)}"`.strip
|
|
32
|
-
geometry.
|
|
32
|
+
expect(geometry).to eq(dimension)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
Then /^the attachment "([^"]*)" should exist$/ do |filename|
|
|
37
|
-
|
|
38
|
-
File.exist?(attachment_path(filename)).
|
|
37
|
+
cd(".") do
|
|
38
|
+
expect(File.exist?(attachment_path(filename))).to be true
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
When /^I swap the attachment "([^"]*)" with the fixture "([^"]*)"$/ do |attachment_filename, fixture_filename|
|
|
43
|
-
|
|
43
|
+
cd(".") do
|
|
44
44
|
require 'fileutils'
|
|
45
45
|
FileUtils.rm_f attachment_path(attachment_filename)
|
|
46
46
|
FileUtils.cp fixture_path(fixture_filename), attachment_path(attachment_filename)
|
|
@@ -48,35 +48,42 @@ When /^I swap the attachment "([^"]*)" with the fixture "([^"]*)"$/ do |attachme
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
Then /^the attachment should have the same content type as the fixture "([^"]*)"$/ do |filename|
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
cd(".") do
|
|
52
|
+
begin
|
|
53
|
+
# Use mime/types/columnar if available, for reduced memory usage
|
|
54
|
+
require "mime/types/columnar"
|
|
55
|
+
rescue LoadError
|
|
56
|
+
require "mime/types"
|
|
57
|
+
end
|
|
58
|
+
|
|
53
59
|
attachment_content_type = `bundle exec #{runner_command} "puts User.last.attachment_content_type"`.strip
|
|
54
|
-
|
|
60
|
+
expected = MIME::Types.type_for(filename).first.content_type
|
|
61
|
+
expect(attachment_content_type).to eq(expected)
|
|
55
62
|
end
|
|
56
63
|
end
|
|
57
64
|
|
|
58
65
|
Then /^the attachment should have the same file name as the fixture "([^"]*)"$/ do |filename|
|
|
59
|
-
|
|
66
|
+
cd(".") do
|
|
60
67
|
attachment_file_name = `bundle exec #{runner_command} "puts User.last.attachment_file_name"`.strip
|
|
61
|
-
attachment_file_name.
|
|
68
|
+
expect(attachment_file_name).to eq(File.name(fixture_path(filename)).to_s)
|
|
62
69
|
end
|
|
63
70
|
end
|
|
64
71
|
|
|
65
72
|
Then /^the attachment should have the same file size as the fixture "([^"]*)"$/ do |filename|
|
|
66
|
-
|
|
73
|
+
cd(".") do
|
|
67
74
|
attachment_file_size = `bundle exec #{runner_command} "puts User.last.attachment_file_size"`.strip
|
|
68
|
-
attachment_file_size.
|
|
75
|
+
expect(attachment_file_size).to eq(File.size(fixture_path(filename)).to_s)
|
|
69
76
|
end
|
|
70
77
|
end
|
|
71
78
|
|
|
72
79
|
Then /^the attachment file "([^"]*)" should (not )?exist$/ do |filename, not_exist|
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
cd(".") do
|
|
81
|
+
expect(attachment_path(filename)).not_to be_an_existing_file
|
|
75
82
|
end
|
|
76
83
|
end
|
|
77
84
|
|
|
78
85
|
Then /^I should have attachment columns for "([^"]*)"$/ do |attachment_name|
|
|
79
|
-
|
|
86
|
+
cd(".") do
|
|
80
87
|
columns = eval(`bundle exec #{runner_command} "puts User.columns.map{ |column| [column.name, column.type] }.inspect"`.strip)
|
|
81
88
|
expect_columns = [
|
|
82
89
|
["#{attachment_name}_file_name", :string],
|
|
@@ -84,13 +91,12 @@ Then /^I should have attachment columns for "([^"]*)"$/ do |attachment_name|
|
|
|
84
91
|
["#{attachment_name}_file_size", :integer],
|
|
85
92
|
["#{attachment_name}_updated_at", :datetime]
|
|
86
93
|
]
|
|
87
|
-
|
|
88
|
-
expect_columns.all?{ |column| columns.include? column }.should eq true
|
|
94
|
+
expect(columns).to include(*expect_columns)
|
|
89
95
|
end
|
|
90
96
|
end
|
|
91
97
|
|
|
92
98
|
Then /^I should not have attachment columns for "([^"]*)"$/ do |attachment_name|
|
|
93
|
-
|
|
99
|
+
cd(".") do
|
|
94
100
|
columns = eval(`bundle exec #{runner_command} "puts User.columns.map{ |column| [column.name, column.type] }.inspect"`.strip)
|
|
95
101
|
expect_columns = [
|
|
96
102
|
["#{attachment_name}_file_name", :string],
|
|
@@ -99,6 +105,6 @@ Then /^I should not have attachment columns for "([^"]*)"$/ do |attachment_name|
|
|
|
99
105
|
["#{attachment_name}_updated_at", :datetime]
|
|
100
106
|
]
|
|
101
107
|
|
|
102
|
-
|
|
108
|
+
expect(columns).not_to include(*expect_columns)
|
|
103
109
|
end
|
|
104
110
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Then %r{I should see an image with a path of "([^"]*)"} do |path|
|
|
2
|
-
page.
|
|
2
|
+
expect(page).to have_css("img[src^='#{path}']")
|
|
3
3
|
end
|
|
4
4
|
|
|
5
5
|
Then %r{^the file at "([^"]*)" is the same as "([^"]*)"$} do |web_file, path|
|
|
@@ -11,5 +11,5 @@ Then %r{^the file at "([^"]*)" is the same as "([^"]*)"$} do |web_file, path|
|
|
|
11
11
|
page.body
|
|
12
12
|
end
|
|
13
13
|
actual.force_encoding("UTF-8") if actual.respond_to?(:force_encoding)
|
|
14
|
-
actual.
|
|
14
|
+
expect(actual).to eq(expected)
|
|
15
15
|
end
|
|
@@ -24,7 +24,7 @@ Given /^I generate a new rails application$/ do
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
Given "I fix the application.rb for 3.0.12" do
|
|
27
|
-
|
|
27
|
+
cd(".") do
|
|
28
28
|
File.open("config/application.rb", "a") do |f|
|
|
29
29
|
f << "ActionController::Base.config.relative_url_root = ''"
|
|
30
30
|
end
|
|
@@ -32,7 +32,7 @@ Given "I fix the application.rb for 3.0.12" do
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
Given "I allow the attachment to be submitted" do
|
|
35
|
-
|
|
35
|
+
cd(".") do
|
|
36
36
|
transform_file("app/controllers/users_controller.rb") do |content|
|
|
37
37
|
content.gsub("params.require(:user).permit(:name)",
|
|
38
38
|
"params.require(:user).permit!")
|
|
@@ -41,7 +41,7 @@ Given "I allow the attachment to be submitted" do
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
Given "I remove turbolinks" do
|
|
44
|
-
|
|
44
|
+
cd(".") do
|
|
45
45
|
transform_file("app/assets/javascripts/application.js") do |content|
|
|
46
46
|
content.gsub("//= require turbolinks", "")
|
|
47
47
|
end
|
|
@@ -70,7 +70,7 @@ def attach_attachment(name, definition = nil)
|
|
|
70
70
|
snippet += definition
|
|
71
71
|
end
|
|
72
72
|
snippet += "\ndo_not_validate_attachment_file_type :#{name}\n"
|
|
73
|
-
|
|
73
|
+
cd(".") do
|
|
74
74
|
transform_file("app/models/user.rb") do |content|
|
|
75
75
|
content.sub(/end\Z/, "#{snippet}\nend")
|
|
76
76
|
end
|
|
@@ -78,7 +78,7 @@ def attach_attachment(name, definition = nil)
|
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
Given "I empty the application.js file" do
|
|
81
|
-
|
|
81
|
+
cd(".") do
|
|
82
82
|
transform_file("app/assets/javascripts/application.js") do |content|
|
|
83
83
|
""
|
|
84
84
|
end
|
|
@@ -128,7 +128,7 @@ end
|
|
|
128
128
|
|
|
129
129
|
Given /^I add this snippet to the User model:$/ do |snippet|
|
|
130
130
|
file_name = "app/models/user.rb"
|
|
131
|
-
|
|
131
|
+
cd(".") do
|
|
132
132
|
content = File.read(file_name)
|
|
133
133
|
File.open(file_name, 'w') { |f| f << content.sub(/end\Z/, "#{snippet}\nend") }
|
|
134
134
|
end
|
|
@@ -136,14 +136,14 @@ end
|
|
|
136
136
|
|
|
137
137
|
Given /^I add this snippet to config\/application.rb:$/ do |snippet|
|
|
138
138
|
file_name = "config/application.rb"
|
|
139
|
-
|
|
139
|
+
cd(".") do
|
|
140
140
|
content = File.read(file_name)
|
|
141
141
|
File.open(file_name, 'w') {|f| f << content.sub(/class Application < Rails::Application.*$/, "class Application < Rails::Application\n#{snippet}\n")}
|
|
142
142
|
end
|
|
143
143
|
end
|
|
144
144
|
|
|
145
145
|
Given /^I start the rails application$/ do
|
|
146
|
-
|
|
146
|
+
cd(".") do
|
|
147
147
|
require "./config/environment"
|
|
148
148
|
require "capybara/rails"
|
|
149
149
|
end
|
|
@@ -154,7 +154,7 @@ Given /^I reload my application$/ do
|
|
|
154
154
|
end
|
|
155
155
|
|
|
156
156
|
When /^I turn off class caching$/ do
|
|
157
|
-
|
|
157
|
+
cd(".") do
|
|
158
158
|
file = "config/environments/test.rb"
|
|
159
159
|
config = IO.read(file)
|
|
160
160
|
config.gsub!(%r{^\s*config.cache_classes.*$},
|
|
@@ -166,7 +166,7 @@ end
|
|
|
166
166
|
Then /^the file at "([^"]*)" should be the same as "([^"]*)"$/ do |web_file, path|
|
|
167
167
|
expected = IO.read(path)
|
|
168
168
|
actual = read_from_web(web_file)
|
|
169
|
-
actual.
|
|
169
|
+
expect(actual).to eq(expected)
|
|
170
170
|
end
|
|
171
171
|
|
|
172
172
|
When /^I configure the application to use "([^\"]+)" from this project$/ do |name|
|
|
@@ -190,15 +190,9 @@ When /^I comment out the gem "([^"]*)" from the Gemfile$/ do |gemname|
|
|
|
190
190
|
comment_out_gem_in_gemfile gemname
|
|
191
191
|
end
|
|
192
192
|
|
|
193
|
-
Given /^I am using Rails newer than ([\d\.]+)$/ do |version|
|
|
194
|
-
if framework_version < version
|
|
195
|
-
pending "Not supported in Rails < #{version}"
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
|
|
199
193
|
Given(/^I add a "(.*?)" processor in "(.*?)"$/) do |processor, directory|
|
|
200
194
|
filename = "#{directory}/#{processor}.rb"
|
|
201
|
-
|
|
195
|
+
cd(".") do
|
|
202
196
|
FileUtils.mkdir_p directory
|
|
203
197
|
File.open(filename, "w") do |f|
|
|
204
198
|
f.write(<<-CLASS)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
When /^I attach the file "([^"]*)" to "([^"]*)" on S3$/ do |file_path, field|
|
|
2
2
|
definition = Paperclip::AttachmentRegistry.definitions_for(User)[field.downcase.to_sym]
|
|
3
|
-
path = "https://paperclip.s3.amazonaws.com#{definition[:path]}"
|
|
3
|
+
path = "https://paperclip.s3-us-west-2.amazonaws.com#{definition[:path]}"
|
|
4
4
|
path.gsub!(':filename', File.basename(file_path))
|
|
5
5
|
path.gsub!(/:([^\/\.]+)/) do |match|
|
|
6
6
|
"([^\/\.]+)"
|
|
7
7
|
end
|
|
8
|
-
FakeWeb.register_uri(:put, Regexp.new(path), :body => "
|
|
8
|
+
FakeWeb.register_uri(:put, Regexp.new(path), :body => "<xml></xml>")
|
|
9
9
|
step "I attach the file \"#{file_path}\" to \"#{field}\""
|
|
10
10
|
end
|
|
11
11
|
|
|
@@ -103,107 +103,5 @@ When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
|
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
Then /^(?:|I )should see "([^"]*)"$/ do |text|
|
|
106
|
-
|
|
107
|
-
page.should have_content(text)
|
|
108
|
-
else
|
|
109
|
-
assert page.has_content?(text)
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
Then /^(?:|I )should see \/([^\/]*)\/$/ do |regexp|
|
|
114
|
-
regexp = Regexp.new(regexp)
|
|
115
|
-
|
|
116
|
-
if page.respond_to? :should
|
|
117
|
-
page.should have_xpath('//*', :text => regexp)
|
|
118
|
-
else
|
|
119
|
-
assert page.has_xpath?('//*', :text => regexp)
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
Then /^(?:|I )should not see "([^"]*)"$/ do |text|
|
|
124
|
-
if page.respond_to? :should
|
|
125
|
-
page.should have_no_content(text)
|
|
126
|
-
else
|
|
127
|
-
assert page.has_no_content?(text)
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
Then /^(?:|I )should not see \/([^\/]*)\/$/ do |regexp|
|
|
132
|
-
regexp = Regexp.new(regexp)
|
|
133
|
-
|
|
134
|
-
if page.respond_to? :should
|
|
135
|
-
page.should have_no_xpath('//*', :text => regexp)
|
|
136
|
-
else
|
|
137
|
-
assert page.has_no_xpath?('//*', :text => regexp)
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
Then /^the "([^"]*)" field(?: within (.*))? should contain "([^"]*)"$/ do |field, parent, value|
|
|
142
|
-
with_scope(parent) do
|
|
143
|
-
field = find_field(field)
|
|
144
|
-
if field.value.respond_to? :should
|
|
145
|
-
field.value.should =~ /#{value}/
|
|
146
|
-
else
|
|
147
|
-
assert_match(/#{value}/, field.value)
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
Then /^the "([^"]*)" field(?: within (.*))? should not contain "([^"]*)"$/ do |field, parent, value|
|
|
153
|
-
with_scope(parent) do
|
|
154
|
-
field = find_field(field)
|
|
155
|
-
if field.value.respond_to? :should_not
|
|
156
|
-
field.value.should_not =~ /#{value}/
|
|
157
|
-
else
|
|
158
|
-
assert_no_match(/#{value}/, field.value)
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
Then /^the "([^"]*)" checkbox(?: within (.*))? should be checked$/ do |label, parent|
|
|
164
|
-
with_scope(parent) do
|
|
165
|
-
field_checked = find_field(label)['checked']
|
|
166
|
-
if field_checked.respond_to? :should
|
|
167
|
-
field_checked.should eq true
|
|
168
|
-
else
|
|
169
|
-
assert field_checked
|
|
170
|
-
end
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
Then /^the "([^"]*)" checkbox(?: within (.*))? should not be checked$/ do |label, parent|
|
|
175
|
-
with_scope(parent) do
|
|
176
|
-
field_checked = find_field(label)['checked']
|
|
177
|
-
if field_checked.respond_to? :should
|
|
178
|
-
field_checked.should eq false
|
|
179
|
-
else
|
|
180
|
-
assert !field_checked
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
Then /^(?:|I )should be on (.+)$/ do |page_name|
|
|
186
|
-
current_path = URI.parse(current_url).path
|
|
187
|
-
if current_path.respond_to? :should
|
|
188
|
-
current_path.should == path_to(page_name)
|
|
189
|
-
else
|
|
190
|
-
assert_equal path_to(page_name), current_path
|
|
191
|
-
end
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
|
|
195
|
-
query = URI.parse(current_url).query
|
|
196
|
-
actual_params = query ? CGI.parse(query) : {}
|
|
197
|
-
expected_params = {}
|
|
198
|
-
expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')}
|
|
199
|
-
|
|
200
|
-
if actual_params.respond_to? :should
|
|
201
|
-
actual_params.should == expected_params
|
|
202
|
-
else
|
|
203
|
-
assert_equal expected_params, actual_params
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
Then /^show me the page$/ do
|
|
208
|
-
save_and_open_page
|
|
106
|
+
expect(page).to have_content(text)
|
|
209
107
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module FileHelpers
|
|
2
2
|
def append_to(path, contents)
|
|
3
|
-
|
|
3
|
+
cd(".") do
|
|
4
4
|
File.open(path, "a") do |file|
|
|
5
5
|
file.puts
|
|
6
6
|
file.puts contents
|
|
@@ -13,7 +13,7 @@ module FileHelpers
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def comment_out_gem_in_gemfile(gemname)
|
|
16
|
-
|
|
16
|
+
cd(".") do
|
|
17
17
|
gemfile = File.read("Gemfile")
|
|
18
18
|
gemfile.sub!(/^(\s*)(gem\s*['"]#{gemname})/, "\\1# \\2")
|
|
19
19
|
File.open("Gemfile", 'w'){ |file| file.write(gemfile) }
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "sqlite3", "~> 1.3.8", :platforms => :ruby
|
|
6
|
+
gem "pry"
|
|
7
|
+
gem "rails", "~> 4.2.0"
|
|
8
|
+
gem "aws-sdk", "~> 2.0.0"
|
|
9
|
+
|
|
10
|
+
group :development, :test do
|
|
11
|
+
gem "activerecord-import"
|
|
12
|
+
gem "mime-types"
|
|
13
|
+
gem "builder"
|
|
14
|
+
gem "rubocop", :require => false
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
gemspec :path => "../"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "sqlite3", "~> 1.3.8", :platforms => :ruby
|
|
6
|
+
gem "pry"
|
|
7
|
+
gem "rails", "~> 4.2.0"
|
|
8
|
+
gem "aws-sdk", "~> 2.1.0"
|
|
9
|
+
|
|
10
|
+
group :development, :test do
|
|
11
|
+
gem "activerecord-import"
|
|
12
|
+
gem "mime-types", ">= 1.16", "< 4"
|
|
13
|
+
gem "builder"
|
|
14
|
+
gem "rubocop", :require => false
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
gemspec :path => "../"
|
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
|
-
gem "sqlite3", "1.3.8", :platforms => :ruby
|
|
5
|
+
gem "sqlite3", "~> 1.3.8", :platforms => :ruby
|
|
6
6
|
gem "jruby-openssl", :platforms => :jruby
|
|
7
7
|
gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
|
|
8
8
|
gem "rubysl", :platforms => :rbx
|
|
9
9
|
gem "racc", :platforms => :rbx
|
|
10
10
|
gem "pry"
|
|
11
|
-
gem "rails", "~> 4.
|
|
12
|
-
gem "
|
|
11
|
+
gem "rails", "~> 4.2.0"
|
|
12
|
+
gem "aws-sdk", "~> 2.0"
|
|
13
13
|
|
|
14
14
|
group :development, :test do
|
|
15
15
|
gem "mime-types", "~> 1.16"
|
|
16
16
|
gem "builder"
|
|
17
|
+
gem "rubocop", :require => false
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
gemspec :path => "../"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "sqlite3", "~> 1.3.8", :platforms => :ruby
|
|
6
|
+
gem "pry"
|
|
7
|
+
gem "rails", "5.0.0"
|
|
8
|
+
gem "aws-sdk", "~> 2.0.0"
|
|
9
|
+
|
|
10
|
+
group :development, :test do
|
|
11
|
+
gem "activerecord-import"
|
|
12
|
+
gem "mime-types", ">= 1.16", "< 4"
|
|
13
|
+
gem "builder"
|
|
14
|
+
gem "rubocop", :require => false
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
gemspec :path => "../"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "sqlite3", "~> 1.3.8", :platforms => :ruby
|
|
6
|
+
gem "pry"
|
|
7
|
+
gem "rails", "5.0.0"
|
|
8
|
+
gem "aws-sdk", "~> 2.1.0"
|
|
9
|
+
|
|
10
|
+
group :development, :test do
|
|
11
|
+
gem "activerecord-import"
|
|
12
|
+
gem "mime-types"
|
|
13
|
+
gem "builder"
|
|
14
|
+
gem "rubocop", :require => false
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
gemspec :path => "../"
|
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
|
-
gem "sqlite3", "1.3.8", :platforms => :ruby
|
|
5
|
+
gem "sqlite3", "~> 1.3.8", :platforms => :ruby
|
|
6
6
|
gem "jruby-openssl", :platforms => :jruby
|
|
7
7
|
gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
|
|
8
8
|
gem "rubysl", :platforms => :rbx
|
|
9
9
|
gem "racc", :platforms => :rbx
|
|
10
10
|
gem "pry"
|
|
11
|
-
gem "rails", "~>
|
|
12
|
-
gem "
|
|
11
|
+
gem "rails", "~> 5.0.0"
|
|
12
|
+
gem "aws-sdk", "~> 2.0"
|
|
13
13
|
|
|
14
14
|
group :development, :test do
|
|
15
15
|
gem "mime-types", "~> 1.16"
|
|
16
16
|
gem "builder"
|
|
17
|
+
gem "rubocop", :require => false
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
gemspec :path => "../"
|