paperclip-dropbox 1.1.4 → 1.1.5
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 +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
|