paperclip-dropbox 1.1.4 → 1.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +56 -76
- data/lib/paperclip/storage/dropbox/url_generator.rb +1 -1
- data/paperclip-dropbox.gemspec +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -3,29 +3,45 @@
|
|
3
3
|
This gem extends [Paperclip](https://github.com/thoughtbot/paperclip) with
|
4
4
|
[Dropbox](https://www.dropbox.com) storage.
|
5
5
|
|
6
|
-
##
|
6
|
+
## Setup
|
7
7
|
|
8
|
-
```
|
9
|
-
|
8
|
+
```ruby
|
9
|
+
gem "paperclip-dropbox", ">= 1"
|
10
|
+
```
|
11
|
+
|
12
|
+
Example:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
class User < ActiveRecord::Base
|
16
|
+
has_attached_file :avatar,
|
17
|
+
:storage => :dropbox,
|
18
|
+
:dropbox_credentials => Rails.root.join("config/dropbox.yml"),
|
19
|
+
:dropbox_options => {...}
|
20
|
+
end
|
10
21
|
```
|
11
22
|
|
12
|
-
|
23
|
+
Your `config/dropbox.yml`:
|
13
24
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
25
|
+
```yaml
|
26
|
+
app_key: "..."
|
27
|
+
app_secret: "..."
|
28
|
+
access_token: "..."
|
29
|
+
access_token_secret: "..."
|
30
|
+
user_id: "..."
|
31
|
+
access_type: "..."
|
32
|
+
```
|
18
33
|
|
19
|
-
|
20
|
-
|
34
|
+
In order to fill these in, you must [create a Dropbox app](https://www.dropbox.com/developers/apps)
|
35
|
+
and authorize it. There are two types of Dropbox apps: **App folder** or **Full Dropbox**. You can read
|
36
|
+
about the differences and gotchas in [this wiki](https://github.com/janko-m/paperclip-dropbox/wiki/Access-types).
|
37
|
+
|
38
|
+
After you have created an app, you will be given the "App key" and "App secret". Provide
|
39
|
+
these and the access type to the authorization Rake task:
|
21
40
|
|
22
41
|
```sh
|
23
|
-
$ rake dropbox:authorize APP_KEY=your_app_key APP_SECRET=your_app_secret ACCESS_TYPE=
|
42
|
+
$ rake dropbox:authorize APP_KEY=your_app_key APP_SECRET=your_app_secret ACCESS_TYPE=dropbox|app_folder
|
24
43
|
```
|
25
44
|
|
26
|
-
First it will give you an authorization URL that you must visit to grant the app access.
|
27
|
-
Then it will output your **access token**, and **user ID**.
|
28
|
-
|
29
45
|
For non-Rails projects, you must require this task in your `Rakefile`:
|
30
46
|
|
31
47
|
```ruby
|
@@ -33,47 +49,29 @@ For non-Rails projects, you must require this task in your `Rakefile`:
|
|
33
49
|
load "paperclip/dropbox/tasks.rake"
|
34
50
|
```
|
35
51
|
|
36
|
-
|
37
|
-
|
38
|
-
Example:
|
52
|
+
Follow the instructions, and it will authorize the Dropbox app and output the rest of the credentials.
|
53
|
+
Then you can fill in the rest of `config/dropbox.yml`.
|
39
54
|
|
40
|
-
|
41
|
-
class User < ActiveRecord::Base
|
42
|
-
has_attached_file :avatar,
|
43
|
-
:storage => :dropbox,
|
44
|
-
:dropbox_credentials => "#{Rails.root}/config/dropbox.yml",
|
45
|
-
:dropbox_options => {...}
|
46
|
-
end
|
47
|
-
```
|
55
|
+
And that's it. Everything should work now :)
|
48
56
|
|
49
57
|
### The `:dropbox_credentials` option
|
50
58
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
Example `config/dropbox.yml`:
|
56
|
-
|
57
|
-
```yaml
|
58
|
-
app_key: "APP_KEY"
|
59
|
-
app_secret: "APP_SECRET"
|
60
|
-
access_token: "ACCESS_TOKEN"
|
61
|
-
access_token_secret: "ACCESS_TOKEN_SECRET"
|
62
|
-
user_id: "USER_ID"
|
63
|
-
access_type: "ACCESS_TYPE"
|
59
|
+
```ruby
|
60
|
+
:dropbox_credentials => Rails.root.join("config/dropbox.yml")
|
61
|
+
# or
|
62
|
+
:dropbox_credentials => {app_key: "foo", app_secret: "bar", ...}
|
64
63
|
```
|
65
64
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
ERB:
|
65
|
+
For the list of required credentials, take a look at the `config/dropbox.yml`
|
66
|
+
above.
|
67
|
+
|
68
|
+
The YAML file supports ERB:
|
71
69
|
|
72
70
|
```erb
|
73
71
|
app_key: <%= ENV["DROPBOX_APP_KEY"] %>
|
74
72
|
```
|
75
73
|
|
76
|
-
|
74
|
+
And it supports environment nesting (just like `database.yml`):
|
77
75
|
|
78
76
|
```yaml
|
79
77
|
development:
|
@@ -88,60 +86,42 @@ production:
|
|
88
86
|
|
89
87
|
This is a hash containing any of the following options:
|
90
88
|
|
91
|
-
- `:path` – Block, works similarly to Paperclip's `:path` option
|
92
|
-
- `:unique_filename` – Boolean, whether to generate unique names for files in
|
93
|
-
the absence of a custom `:path`
|
94
89
|
- `:environment` – String, the environment name to use for selecting namespaced
|
95
90
|
credentials in a non-Rails app
|
96
91
|
|
97
|
-
|
98
|
-
should be saved to. The block yields the attachment style and is executed in the
|
99
|
-
scope of the model instance. For example:
|
92
|
+
For example:
|
100
93
|
|
101
94
|
```ruby
|
102
95
|
class User < ActiveRecord::Base
|
103
96
|
has_attached_file :avatar,
|
104
97
|
:storage => :dropbox,
|
105
|
-
:dropbox_credentials =>
|
106
|
-
:
|
107
|
-
:dropbox_options => {
|
108
|
-
:path => proc { |style| "#{style}/#{id}_#{avatar.original_filename}" }
|
109
|
-
}
|
98
|
+
:dropbox_credentials => Rails.root.join("config/dropbox.yml"),
|
99
|
+
:dropbox_options => {environment: ENV["RACK_ENV"]}
|
110
100
|
end
|
111
101
|
```
|
112
102
|
|
113
|
-
|
114
|
-
as his avatar. The following files would be saved to the Dropbox:
|
103
|
+
In Rails you don't need to specify it.
|
115
104
|
|
116
|
-
|
117
|
-
Public/original/23_photo.jpg
|
118
|
-
Public/medium/23_photo_medium.jpg
|
119
|
-
```
|
105
|
+
### The `:path` option
|
120
106
|
|
121
|
-
|
122
|
-
`original`) will always be appended to the filenames, for better management.
|
107
|
+
To change the path of the file, use Paperclip's `:path` option:
|
123
108
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
109
|
+
```ruby
|
110
|
+
:path => ":style/:id_:filename" # Defaults to ":filename"
|
111
|
+
```
|
112
|
+
|
113
|
+
In "Full Dropbox" mode it will automatically be searched in the `Public` folder,
|
114
|
+
so there is not need to specify it.
|
129
115
|
|
130
116
|
### URL options
|
131
117
|
|
132
|
-
|
133
|
-
|
134
|
-
To make `#url` return a direct file download link, set the `:download` option as
|
135
|
-
a parameter:
|
118
|
+
If you want to force the browser to always download the file, you can use
|
119
|
+
the `:download` option.
|
136
120
|
|
137
121
|
```ruby
|
138
122
|
user.avatar.url(:download => true)
|
139
123
|
```
|
140
124
|
|
141
|
-
When using `app_folder` access type, `#url` always returns a direct link, and
|
142
|
-
setting the `:download` option simply forces the file to be downloaded even if
|
143
|
-
the browser would normally just display it.
|
144
|
-
|
145
125
|
### Check if the file exists
|
146
126
|
|
147
127
|
You can easily check if the file exists on Dropbox:
|
@@ -16,7 +16,7 @@ module Paperclip
|
|
16
16
|
url.query = [url.query, "dl=1"].compact.join("&") if options[:download]
|
17
17
|
url.to_s
|
18
18
|
else
|
19
|
-
@attachment_options[:default_url]
|
19
|
+
@attachment_options[:interpolator].interpolate(@attachment_options[:default_url], @attachment, style)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
data/paperclip-dropbox.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paperclip-dropbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -201,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
201
|
version: '0'
|
202
202
|
segments:
|
203
203
|
- 0
|
204
|
-
hash:
|
204
|
+
hash: 129369807
|
205
205
|
requirements: []
|
206
206
|
rubyforge_project:
|
207
207
|
rubygems_version: 1.8.23
|