carrierwave-activerecord-store-in-model 0.10.0 → 0.10.1

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzUzZDJhYzIyOGE4NjM4MmI5YzkyOGQ2ZGVhNTFjODM3MWNhZDBiNQ==
4
+ ZWI2MmNlNmI1ODA3OWY1MTI4ZWEyNzk1OWU1ZDg5NGYzZjVlZjUxNg==
5
5
  data.tar.gz: !binary |-
6
- NjhiNWVmNGY5OGM1YTkzNjJjYTRkNDgxMGI3Y2I5YmRjZDRkOTcxZg==
6
+ ZmU3MDJlMjNkOGNmMzY5YWNlNDMwOGRkYzNkYWU4OTE0Y2Q2YjNjOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- N2ZiMzMxOGYwMjkyZDUzMTg0MmViZjc3MmIyNzY3ODQyN2QyODQ2ZTQ2YTk2
10
- ZDIwMzI1ODU5OTkzOWEwNWI3MTFjMzRjNjQ5MWQwNjQ2ZGE2OTgwNjIxZWYw
11
- OTdmNTkxZWViMWZmOTI5ZDMzNzBkZDM4OTljNWQ0MDk3MTIxM2I=
9
+ ZjU2NjM0MTU4ZTM5NzAwZmNlZjNhMDNkZTE4MWE2OWIyNWVmYTEyMzhlMGQ1
10
+ MGEyNGYzNjM1ZWZiNDhmNjFlOTg4NTE2MGU1YTcxZmY3YjcyOGJiM2IxOWRk
11
+ NDg4ZmVlY2EwZmE4MTFhZGUwMzhlNDZlOWRkYTNjZjEyZGQ2ZjI=
12
12
  data.tar.gz: !binary |-
13
- NDYzYjQ5YWFkMTdhNGRkY2E4ZGZmOWRhYWZiOTgyOGJhMzY1YTg2YzYzZGJj
14
- ZGE3YTlmZmFmYTE1ZTFiZDRlNzdmNjA0NmRmZDJjYTdjM2U5ZmUxOTZlOTYz
15
- MGRhM2Y4MjFlNjNmOWRiNjRlYjVmMzdlYmFjZGU5MGRkYzcwOGM=
13
+ Y2IyNGY2MTI2YTAyMTIwNWQ3ZDE0MTA3OWRlYzQyNjY4ZjI2NmQ4ZGE3NWRi
14
+ ZTk5MWNiNWYzNGZhNDU4NTA0OGQzMTNhODRjNGFjZjRhNzEwODhhZjgzZmRk
15
+ NjM0MzE5ZmE4ODFiODNkOTk1OWI0ZWZiYzhhY2YwNTZjM2UyMjQ=
data/.gitignore CHANGED
@@ -2,4 +2,5 @@
2
2
  spec/public/uploads
3
3
  db/*db
4
4
  .project
5
+ Gemfile.lock
5
6
  pkg
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- carrierwave-activerecord-store-in-model (0.10.0)
4
+ carrierwave-activerecord-store-in-model (0.10.1)
5
5
  activerecord (~> 3.2.0)
6
6
  carrierwave
7
7
 
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Ace Suares
1
+ Copyright (c) 2014 Ace Suares & Royendgel Silberie
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -0,0 +1,188 @@
1
+ # Carrierwave::ActiverecordStoreInModel
2
+
3
+ CarrierWave::ActiverecordStoreInModel is a CarrierWave plugin which stores file data
4
+ using ActiveRecord. It relies on ActiveRecord for database
5
+ independence. It is based on Carrierwave::ActiveRecord.
6
+
7
+ ## Why?
8
+
9
+ Carrierwave::ActiveRecord stores all files in one table, and retreives files by and identifier. In situations
10
+ where not everyone is supposed to retrieve all files (i.e. CanCan), this model doesn't work. Hence the need to store
11
+ the files in the table that is associated with the model.
12
+
13
+ ## Caveat
14
+
15
+ At the moment, only one Uploader per model is supported. This is due to the fact that the columns that hold size, data,
16
+ content_type and identifier are not namespaced.
17
+
18
+ ## Installation
19
+
20
+ ### Add the gem
21
+
22
+ Add it to your Gemfile:
23
+
24
+ gem 'carrierwave-activerecord-store-in-model'
25
+
26
+ And install:
27
+
28
+ $ bundle
29
+
30
+ Or manually:
31
+
32
+ $ gem install carrierwave-activerecord-store-in-model
33
+
34
+ ## Usage
35
+
36
+ To use the ActiveRecord store, add the following to your uploader:
37
+
38
+ storage :activerecord_store_in_model
39
+
40
+ ## Storing files
41
+
42
+ By default, the gem uses the same table as the model, derived from 'model.table_name'.
43
+ A migration is needed to add the following columns:
44
+
45
+ * identifier: string
46
+ * original_filename: string
47
+ * content_type: string
48
+ * size: integer
49
+ * data: binary
50
+
51
+
52
+ ### Rails
53
+
54
+ If you do not have a suitable table, you may generate a migration to
55
+ create the default table:
56
+
57
+ $ rails g migration AddPictureToClient picture:string identifier:string original_filename:string content_type:string size:integer data:binary
58
+ $ rake db:migrate
59
+
60
+ ## The following part is copied from the original Carrierwave::ActiveRecord documentation and may not be accurate for this gem.
61
+
62
+ ### Outside Rails
63
+
64
+ If you are already using ActiveRecord as your ORM, the storage provider
65
+ will use the existing connection. Thus, it will work in Rails without
66
+ any additional configuration.
67
+
68
+ If you are not using ActiveRecord as your ORM, you will need to setup
69
+ the connection to the database.
70
+
71
+
72
+ ## Serving files
73
+
74
+
75
+ ### Rails
76
+
77
+ When used with Rails, the gem attempts to follow routing conventions.
78
+
79
+ File URLs point to the resource on which the uploader is mounted, using
80
+ the mounted attribute name as the tail portion of the URL.
81
+
82
+ To serve the files while preserving security, add to your application's
83
+ routes and appropriate controllers.
84
+
85
+ For example:
86
+
87
+ Given a people resource with an uploader mounted on the avatar field:
88
+
89
+ ```ruby
90
+ # app/models/person.rb
91
+ class Person < ActiveRecord::Base
92
+ attr_accessible :avatar
93
+ mount_uploader :avatar, AvatarUploader
94
+ end
95
+ ```
96
+
97
+ Each avatar file will be available underneath it's corresponding person:
98
+
99
+ `/person/1/avatar`
100
+
101
+ Adding a member GET route to the resource will generate a named route
102
+ for use in controllers and views:
103
+
104
+ ```ruby
105
+ # config/routes.rb
106
+ MyApp::Application.routes.draw do
107
+ resources :people do
108
+ # At the present time, resourcing files has not been tested.
109
+ member { get 'avatar' }
110
+ end
111
+ ```
112
+
113
+ Then implement the method `PeopleController#avatar` to serve the avatar:
114
+
115
+ ```ruby
116
+ # app/controllers/people_controller.rb
117
+ class PeopleController
118
+
119
+ # before_filters for auth, etc.
120
+ # ...
121
+
122
+ def avatar
123
+ person = Person.find(params[:id])
124
+ send_data(person.avatar.read, filename: person.avatar.file.filename)
125
+ end
126
+ end
127
+ ```
128
+
129
+
130
+ ### Outside Rails: default routes
131
+
132
+ Without Rails, file URLs are generated from two parts.
133
+
134
+ * the `downloader_path_prefix`, common to all files
135
+ * the `identifier`, a SHA1 particular to each file
136
+
137
+ The path prefix is configurable in your CarrierWave configure block, as
138
+ `downloader_path_prefix`, the default is `/files`.
139
+
140
+ For example:
141
+
142
+ `GET /files/afdd0c3f8578270aae2bd1784b46cefa0bec8fa6 HTTP/1.1`
143
+
144
+
145
+ ### Outside Rails: custom routes
146
+
147
+ Finally, you have the option of overriding the URL in each uploader:
148
+
149
+ ```ruby
150
+ # app/uploaders/avatar_uploader.rb
151
+ class AvatarUploader < CarrierWave::Uploader::Base
152
+ def url
153
+ "/a/custom/url/to/avatar/#{uploader.model.id}"
154
+ end
155
+ end
156
+ ```
157
+
158
+
159
+ ## Further reading
160
+
161
+ ### An example project
162
+
163
+ The following example and test project tracks the gem: https://github.com/richardkmichael/carrierwave-activerecord-project
164
+
165
+ ### How to add a storage provider
166
+
167
+ A work-in-progress guide to writing a CarrierWave storage provider is here: https://github.com/richardkmichael/carrierwave-activerecord/wiki/Howto:-Adding-a-new-storage-engine
168
+
169
+ ```
170
+ [3] pry(#<CarrierWave::Mount::Mounter>)> self
171
+ => #<CarrierWave::Mount::Mounter:0x00000102b67aa8
172
+ @column=:file,
173
+ @integrity_error=nil,
174
+ @options={},
175
+ @processing_error=nil,
176
+ @record=
177
+ #<ArticleFile id: 5, file: "my_uploaded_file.txt", article_id: 4, created_at: "2012-06-02 11:42:10", updated_at: "2012-06-02 11:42:10">,
178
+ @uploader=,
179
+ @uploader_options={:mount_on=>nil}>
180
+ ```
181
+
182
+ ## Contributing
183
+
184
+ 1. Fork it
185
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
186
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
187
+ 4. Push to the branch (`git push origin my-new-feature`)
188
+ 5. Create new Pull Request
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  module CarrierWave
3
3
  module ActiverecordStoreInModel
4
- VERSION = "0.10.0"
4
+ VERSION = "0.10.1"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave-activerecord-store-in-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ace Suares,