paperclip_database 2.0.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -20,6 +20,9 @@ pkg
20
20
  # Bundler generated
21
21
  *emfile.lock
22
22
 
23
+ # Test suite generated
24
+ test/debug.log
25
+
23
26
  # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
24
27
  #
25
28
  # * Create a file at ~/.gitignore
@@ -3,7 +3,7 @@ Feature: Rails integration
3
3
  Background:
4
4
  Given I generate a new rails application
5
5
  And I run a "scaffold" generator to generate a "User" scaffold with "name:string"
6
- And I run a "paperclip" generator to add a paperclip "attachment" to the "User" model
6
+ And I run a "paperclip" generator to add a paperclip "avatar" to the "User" model
7
7
  And I run a migration
8
8
  And I update my new user view to include the file upload field
9
9
  And I update my user view to include the attachment
@@ -12,34 +12,34 @@ Feature: Rails integration
12
12
  Scenario: Database integration test
13
13
  Given I add this snippet to the User model:
14
14
  """
15
- has_attached_file :attachment,
15
+ has_attached_file :avatar,
16
16
  :storage => :database,
17
- :database_table => :user_attachments,
18
- :url => '/user_attachment_views/:id?style=:style'
17
+ :database_table => :user_avatars,
18
+ :url => '/user_avatar_views/:id?style=:style'
19
19
  """
20
- And I run a "scaffold" generator to generate a "UserAttachmentView" scaffold with ""
21
- Given I replace /^ def show$.*?^ end$/ with this snippet in the "user_attachment_views" controller:
20
+ And I run a "scaffold" generator to generate a "UserAvatarView" scaffold with ""
21
+ Given I replace /^ def show$.*?^ end$/ with this snippet in the "user_avatar_views" controller:
22
22
  """
23
23
  def show
24
24
  style = params[:style] ? params[:style] : 'original'
25
25
  record = User.find(params[:id])
26
- send_data record.attachment.file_contents(style),
27
- :filename => record.attachment_file_name,
28
- :type => record.attachment_content_type
26
+ send_data record.avatar.file_contents(style),
27
+ :filename => record.avatar_file_name,
28
+ :type => record.avatar_content_type
29
29
  end
30
30
  """
31
- Given I replace /before_action :set_user_attachment_view.*?$/ with this snippet in the "user_attachment_views" controller:
31
+ Given I replace /before_action :set_user_avatar_view.*?$/ with this snippet in the "user_avatar_views" controller:
32
32
  """
33
33
  """
34
34
 
35
- And I run a "paperclip_database:migration" generator to create storage for paperclip "attachment" to the "User" model
35
+ And I run a "paperclip_database:migration" generator to create storage for paperclip "avatar" to the "User" model
36
36
  And I run a migration
37
37
  And I start the rails application
38
38
  When I go to the new user page
39
39
  And I fill in "Name" with "something"
40
- And I attach the file "test/fixtures/5k.png" to "Attachment"
40
+ And I attach the file "test/fixtures/5k.png" to "Avatar"
41
41
  And I press "Submit"
42
42
  Then I should see "Name: something"
43
- And I should see an image with a path of "/user_attachment_views/1?style=original"
44
- And the file at "/user_attachment_views/1?style=original" should be the same as "test/fixtures/5k.png"
43
+ And I should see an image with a path of "/user_avatar_views/1?style=original"
44
+ And the file at "/user_avatar_views/1?style=original" should be the same as "test/fixtures/5k.png"
45
45
 
@@ -35,7 +35,7 @@ Given "I allow the attachment to be submitted" do
35
35
  if framework_major_version == 3
36
36
  transform_file("app/models/user.rb") do |content|
37
37
  content.gsub("attr_accessible :name",
38
- "attr_accessible :name, :attachment")
38
+ "attr_accessible :name, :avatar")
39
39
  end
40
40
  else
41
41
  transform_file("app/controllers/users_controller.rb") do |content|
@@ -91,8 +91,8 @@ Given /^I update my new user view to include the file upload field$/ do
91
91
  <%= form_for @user, :html => { :multipart => true } do |f| %>
92
92
  <%= f.label :name %>
93
93
  <%= f.text_field :name %>
94
- <%= f.label :attachment %>
95
- <%= f.file_field :attachment %>
94
+ <%= f.label :avatar %>
95
+ <%= f.file_field :avatar %>
96
96
  <%= submit_tag "Submit" %>
97
97
  <% end %>
98
98
  """
@@ -104,7 +104,7 @@ Given /^I update my user view to include the attachment$/ do
104
104
  Given I overwrite "app/views/users/show.html.erb" with:
105
105
  """
106
106
  <p>Name: <%= @user.name %></p>
107
- <p>Attachment: <%= image_tag @user.attachment.url %></p>
107
+ <p>Avatar: <%= image_tag @user.avatar.url %></p>
108
108
  """
109
109
  }
110
110
  end
@@ -20,7 +20,7 @@ class PaperclipDatabaseGenerator < Rails::Generator::NamedBase
20
20
 
21
21
  def generate_file_name
22
22
  debugger
23
- names = attachments.map{|a| "#{class_name.underscore}_#{a.pluralize}" }
23
+ names = attachments.map{|a| "#{class_name.underscore.tr('/', '_')}_#{a.pluralize}" }
24
24
  names = names[0..-2] + ["and", names[-1]] if names.length > 1
25
25
  "create_#{names.join('_')}"
26
26
  end
@@ -1,8 +1,8 @@
1
1
  class <%= migration_name %> < ActiveRecord::Migration
2
2
  def self.up
3
3
  <% attachments.each do |attachment| -%>
4
- create_table :<%= class_name.underscore %>_<%= attachment.pluralize %> do |t|
5
- t.integer :<%= class_name.underscore %>_id
4
+ create_table :<%= class_name.underscore.tr('/', '_') %>_<%= attachment.pluralize %> do |t|
5
+ t.integer :<%= class_name.underscore.tr('/', '_') %>_id
6
6
  t.string :style
7
7
  t.binary :file_contents
8
8
  end
@@ -11,7 +11,7 @@ class <%= migration_name %> < ActiveRecord::Migration
11
11
 
12
12
  def self.down
13
13
  <% attachments.each do |attachment| -%>
14
- drop_table :<%= class_name.underscore %>_<%= attachment.pluralize %>
14
+ drop_table :<%= class_name.underscore.tr('/', '_') %>_<%= attachment.pluralize %>
15
15
  <% end -%>
16
16
  end
17
17
  end
@@ -1,8 +1,8 @@
1
1
  class <%= migration_name %> < ActiveRecord::Migration
2
2
  def self.up
3
3
  <% attachments.each do |attachment| -%>
4
- create_table :<%= name.underscore.camelize.tableize %>_<%= attachment.pluralize %> do |t|
5
- t.integer :<%= name.underscore.camelize.tableize %>_id
4
+ create_table :<%= name.underscore.camelize.tableize.tr('/', '_') %>_<%= attachment.pluralize %> do |t|
5
+ t.integer :<%= name.underscore.camelize.tableize.tr('/', '_') %>_id
6
6
  t.string :style
7
7
  t.binary :file_contents
8
8
  end
@@ -11,7 +11,7 @@ class <%= migration_name %> < ActiveRecord::Migration
11
11
 
12
12
  def self.down
13
13
  <% attachments.each do |attachment| -%>
14
- drop_table :<%= name.underscore.camelize.tableize %>_<%= attachment.pluralize %>
14
+ drop_table :<%= name.underscore.camelize.tableize.tr('/', '_') %>_<%= attachment.pluralize %>
15
15
  <% end -%>
16
16
  end
17
17
  end
@@ -24,7 +24,7 @@ module PaperclipDatabase
24
24
  protected
25
25
 
26
26
  def migration_name
27
- "create_#{name.underscore}_#{attachment_names.map{|n| n.pluralize}.join('_and_')}"
27
+ "create_#{name.underscore.tr('/', '_')}_#{attachment_names.map{|n| n.pluralize}.join('_and_')}"
28
28
  end
29
29
 
30
30
  def migration_file_name
@@ -1,8 +1,8 @@
1
1
  class <%= migration_class_name %> < ActiveRecord::Migration
2
2
  def self.up
3
3
  <% attachment_names.each do |attachment| -%>
4
- create_table :<%= class_name.underscore %>_<%= attachment.pluralize %> do |t|
5
- t.integer :<%= class_name.underscore %>_id
4
+ create_table :<%= class_name.underscore.tr('/', '_') %>_<%= attachment.pluralize %> do |t|
5
+ t.integer :<%= class_name.underscore.tr('/', '_') %>_id
6
6
  t.string :style
7
7
  t.binary :file_contents
8
8
  end
@@ -11,7 +11,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration
11
11
 
12
12
  def self.down
13
13
  <% attachment_names.each do |attachment| -%>
14
- drop_table :<%= class_name.underscore %>_<%= attachment.pluralize %>
14
+ drop_table :<%= class_name.underscore.tr('/', '_') %>_<%= attachment.pluralize %>
15
15
  <% end -%>
16
16
  end
17
17
  end
@@ -80,10 +80,17 @@ module Paperclip
80
80
  end
81
81
 
82
82
  def setup_paperclip_files_model
83
- #TODO: This fails when your model is in a namespace.
84
- @paperclip_files = "#{instance.class.name.underscore}_#{name.to_s}_paperclip_files"
85
- if !Object.const_defined?(@paperclip_files.classify)
86
- @paperclip_file = Object.const_set(@paperclip_files.classify, Class.new(::ActiveRecord::Base))
83
+ # If the model is in a namespace, look up that module
84
+ if instance.class.name.include?('::')
85
+ module_name = PaperclipDatabase::deconstantize(instance.class.name)
86
+ @paperclip_class_module = module_name.constantize rescue Object
87
+ else
88
+ @paperclip_class_module = Object
89
+ end
90
+
91
+ @paperclip_files = "#{instance.class.name.demodulize.underscore}_#{name.to_s}_paperclip_files"
92
+ if !@paperclip_class_module.const_defined?(@paperclip_files.classify)
93
+ @paperclip_file = @paperclip_class_module.const_set(@paperclip_files.classify, Class.new(::ActiveRecord::Base))
87
94
  @paperclip_file.table_name = @options[:database_table] || name.to_s.pluralize
88
95
  @paperclip_file.validates_uniqueness_of :style, :scope => instance.class.table_name.classify.underscore + '_id'
89
96
  case Rails::VERSION::STRING
@@ -93,13 +100,12 @@ module Paperclip
93
100
  @paperclip_file.scope :file_for, lambda {|style| @paperclip_file.where('style = ?', style) }
94
101
  end
95
102
  else
96
- @paperclip_file = Object.const_get(@paperclip_files.classify)
103
+ @paperclip_file = @paperclip_class_module.const_get(@paperclip_files.classify)
97
104
  end
98
105
  @database_table = @paperclip_file.table_name
99
106
  #FIXME: This fails when using set_table_name "<myname>" in your model
100
107
  #FIXME: This should be fixed in ActiveRecord...
101
- instance.class.has_many @paperclip_files.to_sym, :foreign_key => instance.class.table_name.classify.underscore + '_id'
102
-
108
+ instance.class.has_many @paperclip_files.to_sym, :class_name => @paperclip_file.name, :foreign_key => instance.class.table_name.classify.underscore + '_id'
103
109
  end
104
110
  private :setup_paperclip_files_model
105
111
 
@@ -156,7 +162,7 @@ module Paperclip
156
162
  alias_method :to_io, :to_file
157
163
 
158
164
  def file_for(style)
159
- db_result = instance.send("#{@paperclip_files}").send(:file_for, style.to_s).to_ary
165
+ db_result = instance.send("#{@paperclip_files}").send(:file_for, style.to_s)
160
166
  raise RuntimeError, "More than one result for #{style}" if db_result.size > 1
161
167
  db_result.first
162
168
  end
@@ -0,0 +1,11 @@
1
+
2
+ module PaperclipDatabase
3
+ # This function only appears in Rails >= 3.2.1, so define our own copy here
4
+ def self.deconstantize(path)
5
+ if Gem::Version.new(::Rails::VERSION::STRING) >= Gem::Version.new('3.2.1')
6
+ path.deconstantize
7
+ else
8
+ path.to_s[0...(path.rindex('::') || 0)]
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module PaperclipDatabase
2
- VERSION = "2.0.0" unless defined? PaperclipDatabase::VERSION
2
+ VERSION = "2.2.0" unless defined? PaperclipDatabase::VERSION
3
3
  end
@@ -1,4 +1,4 @@
1
1
  require 'paperclip'
2
2
  require 'paperclip/storage/database'
3
3
  require 'paperclip_database/version'
4
-
4
+ require 'paperclip_database/deconstantize'
@@ -1,3 +1,5 @@
1
+ # -*- ruby -*-
2
+
1
3
  $LOAD_PATH.push File.expand_path("../lib", __FILE__)
2
4
  require 'paperclip_database/version'
3
5
 
@@ -10,8 +12,7 @@ Gem::Specification.new do |s|
10
12
  s.homepage = "https://github.com/softace/paperclip_database"
11
13
  s.summary = "Database storage for paperclip"
12
14
  s.description = "To have all your data in one place: the database"
13
-
14
- s.rubyforge_project = "paperclip_database"
15
+ s.license = 'MIT'
15
16
 
16
17
  s.files = `git ls-files`.split("\n")
17
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
data/test/database.yml ADDED
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: sqlite3
3
+ database: ":memory:"
@@ -0,0 +1,53 @@
1
+ require File.expand_path("../test_helper", __FILE__)
2
+
3
+ module Namespace
4
+ end
5
+
6
+ class NamespacedModelsTest < Test::Unit::TestCase
7
+ def setup
8
+ reset_class("Namespace::Model").tap do |klass|
9
+ klass.table_name = 'namespace_models'
10
+ klass.has_attached_file :avatar, :storage => :database,
11
+ :database_table => :namespace_model_avatars
12
+ end
13
+
14
+ ActiveRecord::Base.connection.create_table :namespace_models, :force => true do |table|
15
+ table.column :avatar_file_name, :string
16
+ table.column :avatar_content_type, :string
17
+ table.column :avatar_file_size, :integer
18
+ table.column :avatar_updated_at, :datetime
19
+ table.column :avatar_fingerprint, :string
20
+ end
21
+ ActiveRecord::Base.connection.create_table :namespace_model_avatars, :force => true do |table|
22
+ table.column :namespace_model_id, :integer
23
+ table.column :style, :string
24
+ table.column :file_contents, :binary
25
+ end
26
+
27
+ @model = Namespace::Model.new
28
+ file = File.open(fixture_file('5k.png'))
29
+
30
+ @model.avatar = file
31
+ @model.save
32
+ end
33
+
34
+ def test_namespaced_model_detection
35
+ assert_equal(Namespace, @model.avatar.instance_variable_get(:@paperclip_class_module))
36
+ end
37
+
38
+ def test_class_name_inference
39
+ assert_equal('model_avatar_paperclip_files', @model.avatar.instance_variable_get(:@paperclip_files))
40
+ end
41
+
42
+ def test_class_inference
43
+ assert_equal(Namespace::ModelAvatarPaperclipFile, @model.avatar.instance_variable_get(:@paperclip_file))
44
+ end
45
+
46
+ def test_table_name
47
+ assert_equal('namespace_model_avatars', @model.avatar.instance_variable_get(:@database_table))
48
+ end
49
+
50
+ def test_association
51
+ assert(@model.methods.include?(:model_avatar_paperclip_files))
52
+ end
53
+ end
@@ -0,0 +1,101 @@
1
+ require 'rubygems'
2
+ require 'tempfile'
3
+ require 'pathname'
4
+ require 'test/unit'
5
+ require 'active_record'
6
+ require 'active_record/version'
7
+ require 'active_support'
8
+ require 'active_support/core_ext'
9
+ require 'mocha/setup'
10
+ require 'ostruct'
11
+ require 'paperclip'
12
+
13
+ ROOT = Pathname(File.expand_path(File.join(File.dirname(__FILE__), '..')))
14
+
15
+ module Rails
16
+ module RailsVersion
17
+ STRING = Gem.loaded_specs['rails'].version.to_s
18
+ end
19
+ VERSION = RailsVersion
20
+
21
+ def root
22
+ Pathname.new(ROOT).join('tmp')
23
+ end
24
+ def env
25
+ 'test'
26
+ end
27
+ end
28
+
29
+ $LOAD_PATH << File.join(ROOT, 'lib')
30
+ $LOAD_PATH << File.join(ROOT, 'lib', 'paperclip')
31
+ $LOAD_PATH << File.join(ROOT, 'lib', 'paperclip_database')
32
+
33
+ require File.join(ROOT, 'lib', 'paperclip_database.rb')
34
+
35
+ config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
36
+ ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
37
+ ActiveRecord::Base.establish_connection(config['test'])
38
+ Paperclip.options[:logger] = ActiveRecord::Base.logger
39
+
40
+ def reset_class class_name
41
+ if class_name.include? '::'
42
+ module_name = PaperclipDatabase::deconstantize(class_name)
43
+ class_module = module_name.constantize rescue Object
44
+ else
45
+ class_module = Object
46
+ end
47
+ class_name = class_name.demodulize
48
+
49
+ ActiveRecord::Base.send(:include, Paperclip::Glue)
50
+ class_module.send(:remove_const, class_name) rescue nil
51
+ klass = class_module.const_set(class_name, Class.new(ActiveRecord::Base))
52
+
53
+ klass.class_eval do
54
+ include Paperclip::Glue
55
+ end
56
+
57
+ klass.reset_column_information
58
+ klass.connection_pool.clear_table_cache!(klass.table_name) if klass.connection_pool.respond_to?(:clear_table_cache!)
59
+ klass.connection.schema_cache.clear_table_cache!(klass.table_name) if klass.connection.respond_to?(:schema_cache)
60
+ klass
61
+ end
62
+
63
+ def reset_table table_name, &block
64
+ block ||= lambda { |table| true }
65
+ ActiveRecord::Base.connection.create_table :dummies, {:force => true}, &block
66
+ end
67
+
68
+ def modify_table table_name, &block
69
+ ActiveRecord::Base.connection.change_table :dummies, &block
70
+ end
71
+
72
+ def rebuild_model options = {}
73
+ ActiveRecord::Base.connection.create_table :dummies, :force => true do |table|
74
+ table.column :title, :string
75
+ table.column :other, :string
76
+ table.column :avatar_file_name, :string
77
+ table.column :avatar_content_type, :string
78
+ table.column :avatar_file_size, :integer
79
+ table.column :avatar_updated_at, :datetime
80
+ table.column :avatar_fingerprint, :string
81
+ end
82
+ rebuild_class options
83
+ end
84
+
85
+ def rebuild_class options = {}
86
+ reset_class("Dummy").tap do |klass|
87
+ klass.has_attached_file :avatar, options
88
+ Paperclip.reset_duplicate_clash_check!
89
+ end
90
+ end
91
+
92
+ def rebuild_meta_class_of obj, options = {}
93
+ (class << obj; self; end).tap do |metaklass|
94
+ metaklass.has_attached_file :avatar, options
95
+ Paperclip.reset_duplicate_clash_check!
96
+ end
97
+ end
98
+
99
+ def fixture_file(filename)
100
+ File.join(File.dirname(__FILE__), 'fixtures', filename)
101
+ end
metadata CHANGED
@@ -1,46 +1,52 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperclip_database
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.2.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Jarl Friis
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-09-11 00:00:00.000000000 Z
12
+ date: 2013-11-12 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: 3.0.0
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: 3.0.0
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: paperclip
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: 2.3.0
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: 2.3.0
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: appraisal
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,20 +62,23 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: mocha
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - '>='
67
+ - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
69
  version: '0'
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - '>='
75
+ - - ! '>='
67
76
  - !ruby/object:Gem::Version
68
77
  version: '0'
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: sqlite3
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ~>
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ~>
81
92
  - !ruby/object:Gem::Version
@@ -83,6 +94,7 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: cucumber
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - ~>
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - ~>
95
108
  - !ruby/object:Gem::Version
@@ -97,6 +110,7 @@ dependencies:
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: launchy
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
115
  - - ~>
102
116
  - !ruby/object:Gem::Version
@@ -104,6 +118,7 @@ dependencies:
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
123
  - - ~>
109
124
  - !ruby/object:Gem::Version
@@ -111,20 +126,23 @@ dependencies:
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: aruba
113
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
114
130
  requirements:
115
- - - '>='
131
+ - - ! '>='
116
132
  - !ruby/object:Gem::Version
117
133
  version: '0'
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
121
138
  requirements:
122
- - - '>='
139
+ - - ! '>='
123
140
  - !ruby/object:Gem::Version
124
141
  version: '0'
125
142
  - !ruby/object:Gem::Dependency
126
143
  name: capybara
127
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
128
146
  requirements:
129
147
  - - ~>
130
148
  - !ruby/object:Gem::Version
@@ -135,6 +153,7 @@ dependencies:
135
153
  type: :development
136
154
  prerelease: false
137
155
  version_requirements: !ruby/object:Gem::Requirement
156
+ none: false
138
157
  requirements:
139
158
  - - ~>
140
159
  - !ruby/object:Gem::Version
@@ -145,46 +164,52 @@ dependencies:
145
164
  - !ruby/object:Gem::Dependency
146
165
  name: bundler
147
166
  requirement: !ruby/object:Gem::Requirement
167
+ none: false
148
168
  requirements:
149
- - - '>='
169
+ - - ! '>='
150
170
  - !ruby/object:Gem::Version
151
171
  version: '0'
152
172
  type: :development
153
173
  prerelease: false
154
174
  version_requirements: !ruby/object:Gem::Requirement
175
+ none: false
155
176
  requirements:
156
- - - '>='
177
+ - - ! '>='
157
178
  - !ruby/object:Gem::Version
158
179
  version: '0'
159
180
  - !ruby/object:Gem::Dependency
160
181
  name: rake
161
182
  requirement: !ruby/object:Gem::Requirement
183
+ none: false
162
184
  requirements:
163
- - - '>='
185
+ - - ! '>='
164
186
  - !ruby/object:Gem::Version
165
187
  version: '0'
166
188
  type: :development
167
189
  prerelease: false
168
190
  version_requirements: !ruby/object:Gem::Requirement
191
+ none: false
169
192
  requirements:
170
- - - '>='
193
+ - - ! '>='
171
194
  - !ruby/object:Gem::Version
172
195
  version: '0'
173
196
  - !ruby/object:Gem::Dependency
174
197
  name: fakeweb
175
198
  requirement: !ruby/object:Gem::Requirement
199
+ none: false
176
200
  requirements:
177
- - - '>='
201
+ - - ! '>='
178
202
  - !ruby/object:Gem::Version
179
203
  version: '0'
180
204
  type: :development
181
205
  prerelease: false
182
206
  version_requirements: !ruby/object:Gem::Requirement
207
+ none: false
183
208
  requirements:
184
- - - '>='
209
+ - - ! '>='
185
210
  - !ruby/object:Gem::Version
186
211
  version: '0'
187
- description: 'To have all your data in one place: the database'
212
+ description: ! 'To have all your data in one place: the database'
188
213
  email:
189
214
  - jarl@softace.dk
190
215
  executables: []
@@ -234,34 +259,46 @@ files:
234
259
  - lib/generators/paperclip_database/migration/templates/migration.rb.erb
235
260
  - lib/paperclip/storage/database.rb
236
261
  - lib/paperclip_database.rb
262
+ - lib/paperclip_database/deconstantize.rb
237
263
  - lib/paperclip_database/version.rb
238
264
  - paperclip_database.gemspec
239
265
  - rails/init.rb
240
266
  - spec/paperclip_database_spec.rb
241
267
  - spec/spec_helper.rb
268
+ - test/database.yml
242
269
  - test/fixtures/5k.png
270
+ - test/namespaced_models_test.rb
271
+ - test/test_helper.rb
243
272
  homepage: https://github.com/softace/paperclip_database
244
- licenses: []
245
- metadata: {}
273
+ licenses:
274
+ - MIT
246
275
  post_install_message:
247
276
  rdoc_options: []
248
277
  require_paths:
249
278
  - lib
250
279
  required_ruby_version: !ruby/object:Gem::Requirement
280
+ none: false
251
281
  requirements:
252
- - - '>='
282
+ - - ! '>='
253
283
  - !ruby/object:Gem::Version
254
284
  version: '0'
285
+ segments:
286
+ - 0
287
+ hash: -127264780216903599
255
288
  required_rubygems_version: !ruby/object:Gem::Requirement
289
+ none: false
256
290
  requirements:
257
- - - '>='
291
+ - - ! '>='
258
292
  - !ruby/object:Gem::Version
259
293
  version: '0'
294
+ segments:
295
+ - 0
296
+ hash: -127264780216903599
260
297
  requirements:
261
298
  - ImageMagick
262
- rubyforge_project: paperclip_database
263
- rubygems_version: 2.0.3
299
+ rubyforge_project:
300
+ rubygems_version: 1.8.23
264
301
  signing_key:
265
- specification_version: 4
302
+ specification_version: 3
266
303
  summary: Database storage for paperclip
267
304
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 09d3aa4732581467b9fc42956a01b056ed8886f4
4
- data.tar.gz: b6c7a2b6dc89f0b4cf417026c211b27c3a1f3099
5
- SHA512:
6
- metadata.gz: 0d4e3af513f1d0f97e07338ed3ad9f88bb4c452b4b5d06b124190b5e3b57873936ad55ac2693abc8c8d9366ae772849a31b90ea91abaa169d4b737ccce3f1127
7
- data.tar.gz: 30e43365c0bd6612037944d90332da8285426a8f2930216ee2d1a6b7aa3b51cb0f68bbc8d1701c09f777982f3afa00aabc3cb07404ac85380487777501eeb8be