paperclip-dropbox 1.1.2 → 1.1.3
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 +33 -49
- data/lib/paperclip/storage/dropbox.rb +1 -1
- data/paperclip-dropbox.gemspec +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -1,50 +1,20 @@
|
|
1
1
|
# Dropbox
|
2
2
|
|
3
3
|
This gem extends [Paperclip](https://github.com/thoughtbot/paperclip) with
|
4
|
-
Dropbox storage.
|
4
|
+
[Dropbox](https://www.dropbox.com) storage.
|
5
5
|
|
6
6
|
## Installation
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
```ruby
|
11
|
-
gem "paperclip-dropbox"
|
8
|
+
```sh
|
9
|
+
$ gem install paperclip-dropbox
|
12
10
|
```
|
13
11
|
|
14
|
-
And run `bundle install`.
|
15
|
-
|
16
12
|
## Dropbox Setup
|
17
13
|
|
18
14
|
You must [create a Dropbox app](https://www.dropbox.com/developers/apps) and
|
19
15
|
authorize it to access the Dropbox account you want to use for storage. You have
|
20
|
-
a choice of two access types: **App folder** or **Full Dropbox**.
|
21
|
-
|
22
|
-
### "Full Dropbox" access
|
23
|
-
|
24
|
-
Files will be stored in the [Public folder](https://www.dropbox.com/help/16/en).
|
25
|
-
Download URLs are predictable, valid forever, and don't require an API call to
|
26
|
-
retrieve, but this may not be a good thing if you don't want your files to be
|
27
|
-
easily accessed. When using one account to store data for multiple sites (e.g.
|
28
|
-
staging and production instances), it's up to you to make sure they don't step
|
29
|
-
on each other's toes.
|
30
|
-
|
31
|
-
Note that accounts created after October 4, 2012 don't have the Public folder
|
32
|
-
enabled by default: [Go here](https://www.dropbox.com/enable_public_folder) to
|
33
|
-
enable it. If you get a message that the folder is deleted, just create a folder
|
34
|
-
in the root named "Public", and it should gain the special icon.
|
35
|
-
|
36
|
-
### "App folder" access
|
37
|
-
|
38
|
-
Files will be stored in a subfolder under Apps (configurable in the app
|
39
|
-
settings). Download URLs are generated on demand by calling the Dropbox API, and
|
40
|
-
are only valid for 4 hours. This means your files are slightly "less public",
|
41
|
-
and you can isolate data from multiple sites by creating multiple apps.
|
42
|
-
|
43
|
-
**In app folder mode, every call to `#url` on an attachment will result in an
|
44
|
-
HTTP request to Dropbox.** Whether or not this is acceptable will depend on what
|
45
|
-
you're storing and how you're exposing it to users.
|
46
|
-
|
47
|
-
### Authorizing your app
|
16
|
+
a choice of two access types: **App folder** or **Full Dropbox**. You can read
|
17
|
+
about the differences in [this wiki](https://github.com/janko-m/paperclip-dropbox/wiki/Access-types).
|
48
18
|
|
49
19
|
After creating your app, it will have an "App key" and "App secret". Provide
|
50
20
|
these and the access type (`dropbox` or `app_folder`) to the authorization Rake task:
|
@@ -53,8 +23,8 @@ these and the access type (`dropbox` or `app_folder`) to the authorization Rake
|
|
53
23
|
$ rake dropbox:authorize APP_KEY=your_app_key APP_SECRET=your_app_secret ACCESS_TYPE=your_access_type
|
54
24
|
```
|
55
25
|
|
56
|
-
|
57
|
-
|
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**.
|
58
28
|
|
59
29
|
For non-Rails projects, you must require this task in your `Rakefile`:
|
60
30
|
|
@@ -84,23 +54,28 @@ authorization Rake task.
|
|
84
54
|
|
85
55
|
Example `config/dropbox.yml`:
|
86
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"
|
64
|
+
```
|
65
|
+
|
66
|
+
Of course, replace these strings with real values. The `"ACCESS_TYPE"`
|
67
|
+
must be either `"dropbox"` or `"app_folder"` depending on the access
|
68
|
+
type of your app; see **Dropbox Setup** above. If you're keeping your
|
69
|
+
credentials in environment variables (or something similar), you can also use
|
70
|
+
ERB:
|
71
|
+
|
87
72
|
```erb
|
88
73
|
app_key: <%= ENV["DROPBOX_APP_KEY"] %>
|
89
|
-
app_secret: <%= ENV["DROPBOX_APP_SECRET"] %>
|
90
|
-
access_token: <%= ENV["DROPBOX_ACCESS_TOKEN"] %>
|
91
|
-
access_token_secret: <%= ENV["DROPBOX_ACCESS_TOKEN_SECRET"] %>
|
92
|
-
user_id: <%= ENV["DROPBOX_USER_ID"] %>
|
93
|
-
access_type: <%= ENV["DROPBOX_ACCESS_TYPE"] %>
|
94
74
|
```
|
95
75
|
|
96
|
-
It is good practice to not include the credentials directly in the YAML file.
|
97
|
-
Instead you can set them in environment variables and embed them with ERB. Note
|
98
|
-
`access_type` must be either `"dropbox"` or `"app_folder"` depending on the
|
99
|
-
access type of your app; see **Dropbox Setup** above.
|
100
|
-
|
101
76
|
You can also nest your credentials in environments (like in your `database.yml`):
|
102
77
|
|
103
|
-
```
|
78
|
+
```yaml
|
104
79
|
development:
|
105
80
|
app_key: "..."
|
106
81
|
...
|
@@ -167,6 +142,15 @@ When using `app_folder` access type, `#url` always returns a direct link, and
|
|
167
142
|
setting the `:download` option simply forces the file to be downloaded even if
|
168
143
|
the browser would normally just display it.
|
169
144
|
|
145
|
+
### Check if the file exists
|
146
|
+
|
147
|
+
You can easily check if the file exists on Dropbox:
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
user.avatar.exists?
|
151
|
+
# user.avatar.exists?(style)
|
152
|
+
```
|
153
|
+
|
170
154
|
## License
|
171
155
|
|
172
|
-
[MIT License](
|
156
|
+
[MIT License](LICENSE)
|
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.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: paperclip
|
@@ -208,7 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
208
|
version: '0'
|
209
209
|
segments:
|
210
210
|
- 0
|
211
|
-
hash:
|
211
|
+
hash: 503150639
|
212
212
|
requirements: []
|
213
213
|
rubyforge_project:
|
214
214
|
rubygems_version: 1.8.23
|