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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/.hound.yml +1066 -0
  3. data/.rubocop.yml +1 -0
  4. data/.travis.yml +18 -15
  5. data/Appraisals +20 -12
  6. data/CONTRIBUTING.md +19 -8
  7. data/Gemfile +4 -9
  8. data/LICENSE +1 -1
  9. data/NEWS +101 -31
  10. data/README.md +243 -159
  11. data/RELEASING.md +17 -0
  12. data/Rakefile +1 -1
  13. data/UPGRADING +12 -9
  14. data/features/basic_integration.feature +8 -4
  15. data/features/migration.feature +0 -24
  16. data/features/step_definitions/attachment_steps.rb +27 -21
  17. data/features/step_definitions/html_steps.rb +2 -2
  18. data/features/step_definitions/rails_steps.rb +11 -17
  19. data/features/step_definitions/s3_steps.rb +2 -2
  20. data/features/step_definitions/web_steps.rb +1 -103
  21. data/features/support/file_helpers.rb +2 -2
  22. data/gemfiles/4.2.awsv2.0.gemfile +17 -0
  23. data/gemfiles/4.2.awsv2.1.gemfile +17 -0
  24. data/gemfiles/{4.1.gemfile → 4.2.awsv2.gemfile} +4 -3
  25. data/gemfiles/5.0.awsv2.0.gemfile +17 -0
  26. data/gemfiles/5.0.awsv2.1.gemfile +17 -0
  27. data/gemfiles/{4.2.gemfile → 5.0.awsv2.gemfile} +4 -3
  28. data/lib/paperclip/attachment.rb +19 -16
  29. data/lib/paperclip/attachment_registry.rb +3 -2
  30. data/lib/paperclip/callbacks.rb +8 -6
  31. data/lib/paperclip/content_type_detector.rb +27 -11
  32. data/lib/paperclip/errors.rb +3 -1
  33. data/lib/paperclip/file_command_content_type_detector.rb +6 -8
  34. data/lib/paperclip/geometry_parser_factory.rb +1 -1
  35. data/lib/paperclip/glue.rb +1 -1
  36. data/lib/paperclip/has_attached_file.rb +9 -2
  37. data/lib/paperclip/helpers.rb +14 -10
  38. data/lib/paperclip/interpolations/plural_cache.rb +6 -5
  39. data/lib/paperclip/interpolations.rb +18 -13
  40. data/lib/paperclip/io_adapters/abstract_adapter.rb +1 -0
  41. data/lib/paperclip/io_adapters/http_url_proxy_adapter.rb +1 -1
  42. data/lib/paperclip/io_adapters/uri_adapter.rb +3 -1
  43. data/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +4 -4
  44. data/lib/paperclip/media_type_spoof_detector.rb +2 -2
  45. data/lib/paperclip/rails_environment.rb +25 -0
  46. data/lib/paperclip/schema.rb +3 -9
  47. data/lib/paperclip/storage/fog.rb +21 -12
  48. data/lib/paperclip/storage/s3.rb +51 -50
  49. data/lib/paperclip/thumbnail.rb +2 -3
  50. data/lib/paperclip/validators/attachment_size_validator.rb +1 -7
  51. data/lib/paperclip/version.rb +3 -1
  52. data/lib/paperclip.rb +15 -4
  53. data/lib/tasks/paperclip.rake +17 -1
  54. data/paperclip.gemspec +18 -15
  55. data/spec/paperclip/attachment_definitions_spec.rb +1 -1
  56. data/spec/paperclip/attachment_processing_spec.rb +2 -4
  57. data/spec/paperclip/attachment_registry_spec.rb +84 -13
  58. data/spec/paperclip/attachment_spec.rb +91 -31
  59. data/spec/paperclip/content_type_detector_spec.rb +8 -1
  60. data/spec/paperclip/file_command_content_type_detector_spec.rb +0 -1
  61. data/spec/paperclip/geometry_spec.rb +1 -1
  62. data/spec/paperclip/glue_spec.rb +44 -0
  63. data/spec/paperclip/has_attached_file_spec.rb +24 -8
  64. data/spec/paperclip/integration_spec.rb +4 -3
  65. data/spec/paperclip/interpolations_spec.rb +16 -13
  66. data/spec/paperclip/io_adapters/abstract_adapter_spec.rb +2 -1
  67. data/spec/paperclip/io_adapters/file_adapter_spec.rb +4 -1
  68. data/spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb +12 -0
  69. data/spec/paperclip/io_adapters/stringio_adapter_spec.rb +4 -0
  70. data/spec/paperclip/io_adapters/uri_adapter_spec.rb +27 -0
  71. data/spec/paperclip/matchers/validate_attachment_content_type_matcher_spec.rb +10 -0
  72. data/spec/paperclip/media_type_spoof_detector_spec.rb +34 -11
  73. data/spec/paperclip/paperclip_spec.rb +4 -29
  74. data/spec/paperclip/plural_cache_spec.rb +17 -16
  75. data/spec/paperclip/rails_environment_spec.rb +33 -0
  76. data/spec/paperclip/storage/fog_spec.rb +42 -3
  77. data/spec/paperclip/storage/s3_live_spec.rb +8 -4
  78. data/spec/paperclip/storage/s3_spec.rb +255 -180
  79. data/spec/paperclip/tempfile_factory_spec.rb +4 -0
  80. data/spec/paperclip/thumbnail_spec.rb +16 -0
  81. data/spec/paperclip/url_generator_spec.rb +1 -1
  82. data/spec/paperclip/validators/attachment_size_validator_spec.rb +26 -20
  83. data/spec/paperclip/validators_spec.rb +3 -3
  84. data/spec/spec_helper.rb +6 -1
  85. data/spec/support/assertions.rb +7 -0
  86. data/spec/support/fake_model.rb +4 -0
  87. data/spec/support/fixtures/empty.xlsx +0 -0
  88. data/spec/support/matchers/have_column.rb +11 -2
  89. data/spec/support/model_reconstruction.rb +9 -1
  90. data/spec/support/reporting.rb +11 -0
  91. metadata +105 -54
  92. data/RUNNING_TESTS.md +0 -4
  93. data/cucumber/paperclip_steps.rb +0 -6
  94. data/gemfiles/3.2.gemfile +0 -19
  95. data/gemfiles/4.0.gemfile +0 -19
  96. data/lib/paperclip/locales/de.yml +0 -18
  97. data/lib/paperclip/locales/es.yml +0 -18
  98. data/lib/paperclip/locales/ja.yml +0 -18
  99. data/lib/paperclip/locales/pt-BR.yml +0 -18
  100. data/lib/paperclip/locales/zh-CN.yml +0 -18
  101. data/lib/paperclip/locales/zh-HK.yml +0 -18
  102. data/lib/paperclip/locales/zh-TW.yml +0 -18
  103. data/spec/support/mock_model.rb +0 -2
  104. 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
@@ -11,7 +11,7 @@ task :all do |t|
11
11
  if ENV['BUNDLE_GEMFILE']
12
12
  exec('rake spec cucumber')
13
13
  else
14
- exec("rm gemfiles/*.lock")
14
+ exec("rm -f gemfiles/*.lock")
15
15
  Rake::Task["appraisal:gemfiles"].execute
16
16
  Rake::Task["appraisal:install"].execute
17
17
  exec('rake appraisal')
data/UPGRADING CHANGED
@@ -1,14 +1,17 @@
1
1
  ##################################################
2
- # NOTE FOR UPGRADING FROM PRE-3.0 VERSION #
2
+ # NOTE FOR UPGRADING FROM 4.3.0 OR EARLIER #
3
3
  ##################################################
4
4
 
5
- Paperclip 3.0 introduces a non-backward compatible change in your attachment
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
- has_attached_file :avatar,
12
- :path => ":rails_root/public/system/:attachment/:id/:style/:filename",
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 = {:url => "/paperclip/custom/:attachment/:style/:filename"}
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/5k.png" to "Attachment"
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/5k.png"
25
- And the file at "/paperclip/custom/attachments/original/5k.png" should be the same as "spec/support/fixtures/5k.png"
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
@@ -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 = in_current_dir { File.read("app/models/user.rb") }
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
- in_current_dir { FileUtils.rm_rf ".rbx" }
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
- in_current_dir do
30
+ cd(".") do
31
31
  geometry = `identify -format "%wx%h" "#{attachment_path(filename)}"`.strip
32
- geometry.should == dimension
32
+ expect(geometry).to eq(dimension)
33
33
  end
34
34
  end
35
35
 
36
36
  Then /^the attachment "([^"]*)" should exist$/ do |filename|
37
- in_current_dir do
38
- File.exist?(attachment_path(filename)).should be
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
- in_current_dir do
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
- in_current_dir do
52
- require 'mime/types'
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
- attachment_content_type.should == MIME::Types.type_for(filename).first.content_type
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
- in_current_dir do
66
+ cd(".") do
60
67
  attachment_file_name = `bundle exec #{runner_command} "puts User.last.attachment_file_name"`.strip
61
- attachment_file_name.should == File.name(fixture_path(filename)).to_s
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
- in_current_dir do
73
+ cd(".") do
67
74
  attachment_file_size = `bundle exec #{runner_command} "puts User.last.attachment_file_size"`.strip
68
- attachment_file_size.should == File.size(fixture_path(filename)).to_s
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
- in_current_dir do
74
- check_file_presence([attachment_path(filename)], !not_exist)
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
- in_current_dir do
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
- in_current_dir do
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
- expect_columns.none?{ |column| columns.include? column }.should eq true
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.should have_css("img[src^='#{path}']")
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.should == expected
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
- in_current_dir do
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
- in_current_dir do
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
- in_current_dir do
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
- in_current_dir do
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
- in_current_dir do
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
- in_current_dir do
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
- in_current_dir do
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
- in_current_dir do
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
- in_current_dir do
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.should == expected
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
- in_current_dir do
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 => "OK")
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
- if page.respond_to? :should
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
- in_current_dir do
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
- in_current_dir do
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.1.0"
12
- gem "paperclip", :path => "../"
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", "~> 4.2.0.rc2"
12
- gem "paperclip", :path => "../"
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 => "../"