has_file 0.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.
- data/lib/has_file.rb +13 -0
- data/lib/has_file/class_methods.rb +17 -0
- data/lib/has_file/instance_methods.rb +28 -0
- metadata +47 -0
data/lib/has_file.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'has_file/class_methods'
|
2
|
+
require 'has_file/instance_methods'
|
3
|
+
|
4
|
+
module HasFile
|
5
|
+
require 'rails'
|
6
|
+
|
7
|
+
class Railtie < Rails::Railtie
|
8
|
+
initializer 'HasFile' do
|
9
|
+
ActiveRecord::Base.send :extend, HasFile::ClassMethods
|
10
|
+
ActiveRecord::Base.send :include, HasFile::InstanceMethods
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module HasFile
|
2
|
+
module ClassMethods
|
3
|
+
def has_file(name)
|
4
|
+
define_method name do |*args|
|
5
|
+
retrieve_file name
|
6
|
+
end
|
7
|
+
|
8
|
+
define_method "#{name}=" do |file|
|
9
|
+
assign_file name, file
|
10
|
+
end
|
11
|
+
|
12
|
+
define_method "#{name}?" do
|
13
|
+
has_file? name
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module HasFile
|
2
|
+
module InstanceMethods
|
3
|
+
def assign_file(name, file)
|
4
|
+
write_attribute "#{name}_file", file.read
|
5
|
+
|
6
|
+
if self.respond_to? "#{name}_file_name"
|
7
|
+
write_attribute "#{name}_file_name", file.original_filename
|
8
|
+
end
|
9
|
+
|
10
|
+
if self.respond_to? "#{name}_content_type"
|
11
|
+
write_attribute "#{name}_content_type", file.content_type.to_s.strip
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def retrieve_file(name)
|
16
|
+
if has_file?(name)
|
17
|
+
reader, writer = IO.pipe
|
18
|
+
writer.write self.send("#{name}_file")
|
19
|
+
writer.close
|
20
|
+
reader
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def has_file?(name)
|
25
|
+
!self.send("#{name}_file").nil?
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: has_file
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Charles Treatman
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-09-07 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Makes it easy to save uploaded files in the database with ActiveRecord
|
15
|
+
email: charles.treatman@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/has_file.rb
|
21
|
+
- lib/has_file/class_methods.rb
|
22
|
+
- lib/has_file/instance_methods.rb
|
23
|
+
homepage: http://rubygems.org/gems/has_file
|
24
|
+
licenses: []
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 1.8.21
|
44
|
+
signing_key:
|
45
|
+
specification_version: 3
|
46
|
+
summary: has_file
|
47
|
+
test_files: []
|