has_images 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +14 -0
- data/init.rb +0 -12
- data/lib/digineo/image.rb +3 -11
- data/lib/digineo.rb +3 -0
- data/lib/has_images.rb +20 -5
- data/test/has_images_test.rb +31 -1
- data/test/test_helper.rb +51 -2
- data/test/{digineo → unit/digineo}/image_gallery_test.rb +1 -2
- data/test/{digineo → unit/digineo}/image_test.rb +2 -1
- data/test/{digineo → unit/digineo}/image_type_test.rb +1 -1
- metadata +5 -4
data/README.md
CHANGED
@@ -32,6 +32,20 @@ add the following to your config/enviroment.rb
|
|
32
32
|
class User < ActiveRecord::Base
|
33
33
|
has_images
|
34
34
|
end
|
35
|
+
|
36
|
+
you can also customize the image-storage with paperclip options
|
37
|
+
|
38
|
+
class User < ActiveRecord::Base
|
39
|
+
has_images :styles => {
|
40
|
+
:thumb => ["150x100", :jpg],
|
41
|
+
:mini => ["75x50", :jpg],
|
42
|
+
:medium => ["300x200", :jpg],
|
43
|
+
:large => ["640x480", :jpg],
|
44
|
+
:huge => ["800x600", :jpg],
|
45
|
+
:square => ["200x200", :jpg] },
|
46
|
+
:path => ":rails_root/public/images/:attachment/:id_partition/:id_:style.:extension",
|
47
|
+
:url => "/images/:attachment/:id_partition/:id_:style.:extension"
|
48
|
+
end
|
35
49
|
|
36
50
|
## Examples & usage
|
37
51
|
|
data/init.rb
CHANGED
@@ -2,15 +2,3 @@
|
|
2
2
|
require 'open-uri'
|
3
3
|
require 'has_images'
|
4
4
|
ActiveRecord::Base.send(:include, HasImages)
|
5
|
-
|
6
|
-
Paperclip.interpolates :short_id_partition do |attachment, style|
|
7
|
-
("%08d" % attachment.instance.id).scan(/\d{4}/).join("/")
|
8
|
-
end
|
9
|
-
|
10
|
-
Paperclip.interpolates :parent do |attachment, style|
|
11
|
-
attachment.instance.parentmodel.image_folder rescue attachment.instance.parentmodel.class.to_s.underscore.pluralize
|
12
|
-
end
|
13
|
-
|
14
|
-
Paperclip.interpolates :parent_name do |attachment, style|
|
15
|
-
attachment.instance.parentmodel.friendly_name rescue attachment.instance.parentmodel.to_s
|
16
|
-
end
|
data/lib/digineo/image.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
class Digineo::Image < ActiveRecord::Base
|
2
2
|
|
3
3
|
set_table_name :digineo_images
|
4
|
+
store_full_sti_class = true
|
4
5
|
|
5
6
|
belongs_to :parentmodel, :polymorphic => true
|
6
7
|
belongs_to :gallery, :class_name => "Digineo::ImageGallery"
|
@@ -13,16 +14,7 @@ class Digineo::Image < ActiveRecord::Base
|
|
13
14
|
named_scope :not_avatar, :conditions => "avatar=0"
|
14
15
|
named_scope :without_gallery, :conditions => "gallery_id IS NULL"
|
15
16
|
|
16
|
-
|
17
|
-
has_attached_file :file, :styles => {
|
18
|
-
:thumb => ["150x100", :jpg],
|
19
|
-
:mini => ["75x50", :jpg],
|
20
|
-
:medium => ["300x200", :jpg],
|
21
|
-
:large => ["640x480", :jpg],
|
22
|
-
:huge => ["800x600", :jpg],
|
23
|
-
:square => ["200x200", :jpg] },
|
24
|
-
:path => ":rails_root/public/images/:parent/:short_id_partition/:parent_name_:style.:extension",
|
25
|
-
:url => "/images/:parent/:short_id_partition/:parent_name_:style.:extension"
|
17
|
+
has_attached_file :file
|
26
18
|
|
27
19
|
|
28
20
|
validates_attachment_presence :file, :unless => :file_url_provided?
|
@@ -32,7 +24,7 @@ class Digineo::Image < ActiveRecord::Base
|
|
32
24
|
validates_presence_of :file_remote_url, :if => :file_url_provided?, :message => 'is invalid or inaccessible'
|
33
25
|
|
34
26
|
def set_avatar
|
35
|
-
parentmodel.avatar.unset_avatar if parentmodel.
|
27
|
+
parentmodel.avatar.unset_avatar if parentmodel.avatar
|
36
28
|
update_attribute(:avatar, true)
|
37
29
|
end
|
38
30
|
|
data/lib/digineo.rb
ADDED
data/lib/has_images.rb
CHANGED
@@ -1,16 +1,31 @@
|
|
1
1
|
# HasImages
|
2
|
+
|
2
3
|
module HasImages
|
3
4
|
def self.included(base)
|
4
|
-
base.send :extend, ClassMethods
|
5
|
+
base.send :extend, ClassMethods
|
5
6
|
end
|
6
7
|
|
7
8
|
module ClassMethods
|
8
9
|
# adds has_images to model
|
9
|
-
def has_images
|
10
|
-
|
10
|
+
def has_images(options={})
|
11
|
+
|
12
|
+
# eval is not always evil ;)
|
13
|
+
# we generate a Digineo::Model::Image clase to store the given paperclip configuration in it
|
14
|
+
eval <<-EOF
|
15
|
+
module Digineo::#{self.class_name}
|
16
|
+
class Digineo::#{self.class_name}::Image < Digineo::Image
|
17
|
+
has_attached_file :file, #{options.inspect}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
EOF
|
21
|
+
|
22
|
+
has_many :images, :as => :parentmodel, :dependent => :destroy, :order => 'id ASC', :class_name => "Digineo::#{self.class_name}::Image"
|
11
23
|
has_one :avatar, :as => :parentmodel, :order => 'id ASC', :class_name => "Digineo::Image", :conditions => 'avatar=1'
|
12
|
-
has_many :galleries, :as => :parentmodel, :dependent => :destroy, :class_name => 'Digineo::ImageGallery'
|
13
|
-
|
24
|
+
has_many :galleries, :as => :parentmodel, :dependent => :destroy, :class_name => 'Digineo::ImageGallery'
|
25
|
+
|
26
|
+
named_scope :with_avatar, :include => :avatar
|
27
|
+
|
28
|
+
send :include, InstanceMethods
|
14
29
|
end
|
15
30
|
end
|
16
31
|
|
data/test/has_images_test.rb
CHANGED
@@ -1,4 +1,34 @@
|
|
1
|
-
require 'test_helper'
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class User < ActiveRecord::Base
|
4
|
+
has_images :styles => {
|
5
|
+
:thumb => ["150x100", :jpg],
|
6
|
+
:mini => ["75x50", :jpg],
|
7
|
+
:medium => ["300x200", :jpg],
|
8
|
+
:large => ["640x480", :jpg],
|
9
|
+
:huge => ["800x600", :jpg],
|
10
|
+
:square => ["200x200", :jpg] },
|
11
|
+
:path => ":rails_root/public/images/:parent/:short_id_partition/:parent_name_:style.:extension",
|
12
|
+
:url => "/images/:parent/:short_id_partition/:parent_name_:style.:extension"
|
13
|
+
end
|
14
|
+
|
15
|
+
class UserTest < ActiveSupport::TestCase
|
16
|
+
context "user model" do
|
17
|
+
should_have_many :images, :galleries
|
18
|
+
should_have_named_scope :with_avatar
|
19
|
+
|
20
|
+
|
21
|
+
context "image configuration" do
|
22
|
+
should "exist class Digineo::User::Image" do
|
23
|
+
user = User.new
|
24
|
+
|
25
|
+
assert Digineo::User::Image
|
26
|
+
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
2
32
|
|
3
33
|
class HasImagesTest < ActiveSupport::TestCase
|
4
34
|
# Replace this with your real tests.
|
data/test/test_helper.rb
CHANGED
@@ -1,3 +1,52 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require '
|
3
|
-
require '
|
2
|
+
require 'active_record'
|
3
|
+
require 'shoulda/rails'
|
4
|
+
require 'active_support/test_case'
|
5
|
+
require 'paperclip'
|
6
|
+
|
7
|
+
require File.expand_path(File.dirname(__FILE__)+"/../lib/digineo")
|
8
|
+
require File.expand_path(File.dirname(__FILE__)+"/../lib/digineo/image")
|
9
|
+
require File.expand_path(File.dirname(__FILE__)+"/../lib/digineo/image_gallery")
|
10
|
+
require File.expand_path(File.dirname(__FILE__)+"/../lib/digineo/image_type")
|
11
|
+
require File.expand_path(File.dirname(__FILE__)+"/../lib/has_images")
|
12
|
+
ActiveRecord::Base.send(:include, HasImages)
|
13
|
+
|
14
|
+
config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
|
15
|
+
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
|
16
|
+
ActiveRecord::Base.establish_connection(config['test'])
|
17
|
+
|
18
|
+
ActiveRecord::Schema.define do
|
19
|
+
create_table "users", :force => true do |t|
|
20
|
+
t.column "name", :text
|
21
|
+
t.column "email", :text
|
22
|
+
end
|
23
|
+
|
24
|
+
create_table :digineo_image_types do |t|
|
25
|
+
t.string :name
|
26
|
+
end
|
27
|
+
|
28
|
+
create_table :digineo_image_galleries do |t|
|
29
|
+
t.string :name
|
30
|
+
t.integer :parentmodel_id, :references => nil
|
31
|
+
t.string :parentmodel_type
|
32
|
+
t.timestamps
|
33
|
+
end
|
34
|
+
|
35
|
+
create_table :digineo_images do |t|
|
36
|
+
t.string :name
|
37
|
+
t.text :text
|
38
|
+
t.integer :gallery_id, :on_delete => :set_null, :references => :digineo_image_galleries
|
39
|
+
t.integer :image_type_id, :on_delete => :set_null, :references => :digineo_image_types
|
40
|
+
t.integer :parentmodel_id, :references => nil
|
41
|
+
t.string :parentmodel_type
|
42
|
+
t.string :file_file_name
|
43
|
+
t.string :file_content_type
|
44
|
+
t.string :file_remote_url
|
45
|
+
t.integer :file_file_size
|
46
|
+
t.datetime :file_updated_at
|
47
|
+
t.string :type
|
48
|
+
t.boolean :avatar, :default => false, :null => false
|
49
|
+
t.timestamps
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
@@ -1,8 +1,7 @@
|
|
1
|
-
require 'test_helper'
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
2
|
|
3
3
|
class Digineo::ImageGalleryTest < ActiveSupport::TestCase
|
4
4
|
should_validate_presence_of :name
|
5
5
|
should_belong_to :parentmodel
|
6
6
|
should_have_many :images
|
7
|
-
should_validate_uniqueness_of :name, :scoped_to => [:parentmodel_id, :parentmodel_type]
|
8
7
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_images
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dennis Meise
|
@@ -38,6 +38,7 @@ files:
|
|
38
38
|
- Rakefile
|
39
39
|
- README.md
|
40
40
|
- lib/has_images.rb
|
41
|
+
- lib/digineo.rb
|
41
42
|
- lib/digineo/image_gallery.rb
|
42
43
|
- lib/digineo/image_type.rb
|
43
44
|
- lib/digineo/image.rb
|
@@ -72,8 +73,8 @@ signing_key:
|
|
72
73
|
specification_version: 3
|
73
74
|
summary: HasImages adds images and galleries to your ActiveRecord models.
|
74
75
|
test_files:
|
75
|
-
- test/digineo/image_gallery_test.rb
|
76
|
-
- test/digineo/image_type_test.rb
|
77
|
-
- test/digineo/image_test.rb
|
76
|
+
- test/unit/digineo/image_gallery_test.rb
|
77
|
+
- test/unit/digineo/image_type_test.rb
|
78
|
+
- test/unit/digineo/image_test.rb
|
78
79
|
- test/has_images_test.rb
|
79
80
|
- test/test_helper.rb
|