attacheable 1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.ru +54 -0
- data/Rakefile +44 -0
- data/init.rb +1 -0
- metadata +57 -0
data/README.ru
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
После длительной работы с file_column, acts_as_attachment и attachment_fu, которые друг от друга
|
2
|
+
решительно ничем не отличаются, были сформулированы претензии к этим плагинам:
|
3
|
+
|
4
|
+
1) на каждый тамбнейл создаётся запись в таблице, что лично мне совершенно не нужно;
|
5
|
+
2) поменять набор тамбнейлов очень сложно, никаких ручек для этого плагин не представляет;
|
6
|
+
3) невозможно генерировать тамбнейлы на лету;
|
7
|
+
4) очень сложная логика из-за попыток охватить несколько обработчиков картинок, что само по себе имеет мало смысла:
|
8
|
+
если есть RMagick, то 99% доступна утилита convert, которая не жрёт память с таким аппетитом;
|
9
|
+
5) не очень удобно принудительно кропить картинки под нужный размер.
|
10
|
+
|
11
|
+
Было принято решение немного переделать плагин attachment_fu (http://svn.techno-weenie.net/projects/plugins/attachment_fu/)
|
12
|
+
со следующими допущениями:
|
13
|
+
|
14
|
+
1) файлы сохраняются только на диск и никуда более;
|
15
|
+
2) картинки обрабатываются только утилитами identify, convert и mogrify;
|
16
|
+
3) на одну картинку со всеми её тамбнейлами создаётся только одна запись в БД;
|
17
|
+
4) картинки можно кропить;
|
18
|
+
5) тамбнейлы можно перегенерировать;
|
19
|
+
6) при удалении картинки попросту удаляется вся директория, где лежали все её картинки,
|
20
|
+
что бы стереть всё то, что может быть туда нагенерировано другими плагинами.
|
21
|
+
|
22
|
+
Плюс к этому доработалась такая функциональность, как репликация по scp на другой сервер.
|
23
|
+
Многим проектам среднего размера, где второй сервер покупается не для скорости, а для надежности,
|
24
|
+
это будет удобно.
|
25
|
+
|
26
|
+
В этом плагине есть метод regenerate_thumbnails!: Image.regenerate_thumbnails!(:preview)
|
27
|
+
Если поменялся размер картинки, то таким образом можно перегенерировать все preview
|
28
|
+
|
29
|
+
Использование достаточно простое:
|
30
|
+
|
31
|
+
Создаётся схема БД наподобие:
|
32
|
+
|
33
|
+
create_table :images do |t|
|
34
|
+
t.string :filename
|
35
|
+
t.string :content_type
|
36
|
+
t.integer :width
|
37
|
+
t.integer :height
|
38
|
+
t.string :type
|
39
|
+
end
|
40
|
+
|
41
|
+
После чего в классе прописывается:
|
42
|
+
|
43
|
+
class Image < ActiveRecord::Base
|
44
|
+
has_attachment :thumbnails => {:medium => "120x", :large => "800x600", :preview => "100x100"},
|
45
|
+
:croppable_thumbnails => %w(preview)
|
46
|
+
validates_as_attachment
|
47
|
+
end
|
48
|
+
|
49
|
+
После этого форме аплоада назначается имя uploaded_data и картинки начинают сохраняться.
|
50
|
+
Вывести картинку можно таким образом:
|
51
|
+
|
52
|
+
<%= image_tag @image.public_filename(:preview) %>
|
53
|
+
|
54
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/testtask'
|
4
|
+
require 'rake/gempackagetask'
|
5
|
+
|
6
|
+
spec = Gem::Specification.new do |s|
|
7
|
+
s.name = 'attacheable'
|
8
|
+
s.version = '1.0'
|
9
|
+
s.summary = 'Library to handle image uploads'
|
10
|
+
s.autorequire = 'attacheable'
|
11
|
+
s.author = "Max Lapshin"
|
12
|
+
s.email = "max@maxidoors.ru"
|
13
|
+
s.description = "Fork of attachment_fu. It differs in following ways:
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
1. Can work with merb uploads
|
18
|
+
|
19
|
+
2. can create thumbnails on fly
|
20
|
+
|
21
|
+
3. goes with Mongrel handler, that autocreate thumbnails on demand
|
22
|
+
|
23
|
+
4. works only with file system (and does it better, than attachment_fu)
|
24
|
+
|
25
|
+
5. create only one row in table for one image. No separate rows for each thumbnail."
|
26
|
+
s.rubyforge_project = "attacheable"
|
27
|
+
s.has_rdoc = false
|
28
|
+
s.files = FileList["**"].exclude(".git").to_a
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
Rake::GemPackageTask.new(spec) do |package|
|
33
|
+
package.gem_spec = spec
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
task :default => [ :test ]
|
38
|
+
|
39
|
+
desc "Run all tests (requires BlueCloth, RedCloth and Rails for integration tests)"
|
40
|
+
Rake::TestTask.new("test") { |t|
|
41
|
+
t.libs << "test"
|
42
|
+
t.pattern = 'test/*_test.rb'
|
43
|
+
t.verbose = true
|
44
|
+
}
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'attacheable'
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: attacheable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "1.0"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Max Lapshin
|
8
|
+
autorequire: attacheable
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-04-04 00:00:00 +04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: "Fork of attachment_fu. It differs in following ways: 1. Can work with merb uploads 2. can create thumbnails on fly 3. goes with Mongrel handler, that autocreate thumbnails on demand 4. works only with file system (and does it better, than attachment_fu) 5. create only one row in table for one image. No separate rows for each thumbnail."
|
17
|
+
email: max@maxidoors.ru
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- init.rb
|
26
|
+
- lib
|
27
|
+
- Rakefile
|
28
|
+
- README.ru
|
29
|
+
- test
|
30
|
+
has_rdoc: false
|
31
|
+
homepage:
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
|
35
|
+
require_paths:
|
36
|
+
- lib
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: "0"
|
42
|
+
version:
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: "0"
|
48
|
+
version:
|
49
|
+
requirements: []
|
50
|
+
|
51
|
+
rubyforge_project: attacheable
|
52
|
+
rubygems_version: 1.0.1
|
53
|
+
signing_key:
|
54
|
+
specification_version: 2
|
55
|
+
summary: Library to handle image uploads
|
56
|
+
test_files: []
|
57
|
+
|