multi_sync 0.0.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 +7 -0
- data/.document +3 -0
- data/.gitignore +20 -0
- data/.rubocop.yml +26 -0
- data/.travis.yml +24 -0
- data/.yardopts +6 -0
- data/CHANGELOG.md +0 -0
- data/CONTRIBUTING.md +44 -0
- data/Gemfile +17 -0
- data/LICENSE.md +20 -0
- data/README.md +134 -0
- data/Rakefile +45 -0
- data/examples/custom.rb +34 -0
- data/examples/rails-3-2/.gitignore +15 -0
- data/examples/rails-3-2/Gemfile +43 -0
- data/examples/rails-3-2/README.rdoc +261 -0
- data/examples/rails-3-2/Rakefile +7 -0
- data/examples/rails-3-2/app/assets/images/rails.png +0 -0
- data/examples/rails-3-2/app/assets/javascripts/application.js +15 -0
- data/examples/rails-3-2/app/assets/stylesheets/application.css +13 -0
- data/examples/rails-3-2/app/controllers/application_controller.rb +3 -0
- data/examples/rails-3-2/app/helpers/application_helper.rb +2 -0
- data/examples/rails-3-2/app/mailers/.gitkeep +0 -0
- data/examples/rails-3-2/app/models/.gitkeep +0 -0
- data/examples/rails-3-2/app/views/layouts/application.html.erb +14 -0
- data/examples/rails-3-2/config.ru +4 -0
- data/examples/rails-3-2/config/application.rb +62 -0
- data/examples/rails-3-2/config/asset_sync.yml +21 -0
- data/examples/rails-3-2/config/boot.rb +6 -0
- data/examples/rails-3-2/config/database.yml +25 -0
- data/examples/rails-3-2/config/environment.rb +5 -0
- data/examples/rails-3-2/config/environments/development.rb +37 -0
- data/examples/rails-3-2/config/environments/production.rb +67 -0
- data/examples/rails-3-2/config/environments/test.rb +37 -0
- data/examples/rails-3-2/config/initializers/backtrace_silencers.rb +7 -0
- data/examples/rails-3-2/config/initializers/inflections.rb +15 -0
- data/examples/rails-3-2/config/initializers/mime_types.rb +5 -0
- data/examples/rails-3-2/config/initializers/multi_sync.rb +29 -0
- data/examples/rails-3-2/config/initializers/secret_token.rb +7 -0
- data/examples/rails-3-2/config/initializers/session_store.rb +8 -0
- data/examples/rails-3-2/config/initializers/wrap_parameters.rb +14 -0
- data/examples/rails-3-2/config/locales/en.yml +5 -0
- data/examples/rails-3-2/config/routes.rb +58 -0
- data/examples/rails-3-2/db/seeds.rb +7 -0
- data/examples/rails-3-2/lib/assets/.gitkeep +0 -0
- data/examples/rails-3-2/lib/tasks/.gitkeep +0 -0
- data/examples/rails-3-2/log/.gitkeep +0 -0
- data/examples/rails-3-2/public/404.html +26 -0
- data/examples/rails-3-2/public/422.html +26 -0
- data/examples/rails-3-2/public/500.html +25 -0
- data/examples/rails-3-2/public/favicon.ico +0 -0
- data/examples/rails-3-2/public/index.html +241 -0
- data/examples/rails-3-2/public/robots.txt +5 -0
- data/examples/rails-3-2/script/rails +6 -0
- data/examples/rails-3-2/test/fixtures/.gitkeep +0 -0
- data/examples/rails-3-2/test/functional/.gitkeep +0 -0
- data/examples/rails-3-2/test/integration/.gitkeep +0 -0
- data/examples/rails-3-2/test/performance/browsing_test.rb +12 -0
- data/examples/rails-3-2/test/test_helper.rb +13 -0
- data/examples/rails-3-2/test/unit/.gitkeep +0 -0
- data/examples/rails-4-0/.gitignore +16 -0
- data/examples/rails-4-0/Gemfile +50 -0
- data/examples/rails-4-0/README.rdoc +28 -0
- data/examples/rails-4-0/Rakefile +6 -0
- data/examples/rails-4-0/app/assets/images/.keep +0 -0
- data/examples/rails-4-0/app/assets/javascripts/application.js +16 -0
- data/examples/rails-4-0/app/assets/stylesheets/application.css +13 -0
- data/examples/rails-4-0/app/controllers/application_controller.rb +5 -0
- data/examples/rails-4-0/app/controllers/concerns/.keep +0 -0
- data/examples/rails-4-0/app/helpers/application_helper.rb +2 -0
- data/examples/rails-4-0/app/mailers/.keep +0 -0
- data/examples/rails-4-0/app/models/.keep +0 -0
- data/examples/rails-4-0/app/models/concerns/.keep +0 -0
- data/examples/rails-4-0/app/views/layouts/application.html.erb +14 -0
- data/examples/rails-4-0/config.ru +4 -0
- data/examples/rails-4-0/config/application.rb +24 -0
- data/examples/rails-4-0/config/asset_sync.yml +21 -0
- data/examples/rails-4-0/config/boot.rb +4 -0
- data/examples/rails-4-0/config/database.yml +25 -0
- data/examples/rails-4-0/config/environment.rb +5 -0
- data/examples/rails-4-0/config/environments/development.rb +29 -0
- data/examples/rails-4-0/config/environments/production.rb +80 -0
- data/examples/rails-4-0/config/environments/test.rb +36 -0
- data/examples/rails-4-0/config/initializers/backtrace_silencers.rb +7 -0
- data/examples/rails-4-0/config/initializers/filter_parameter_logging.rb +4 -0
- data/examples/rails-4-0/config/initializers/inflections.rb +16 -0
- data/examples/rails-4-0/config/initializers/mime_types.rb +5 -0
- data/examples/rails-4-0/config/initializers/multi_sync.rb +29 -0
- data/examples/rails-4-0/config/initializers/secret_token.rb +12 -0
- data/examples/rails-4-0/config/initializers/session_store.rb +3 -0
- data/examples/rails-4-0/config/initializers/wrap_parameters.rb +14 -0
- data/examples/rails-4-0/config/locales/en.yml +23 -0
- data/examples/rails-4-0/config/routes.rb +56 -0
- data/examples/rails-4-0/db/seeds.rb +7 -0
- data/examples/rails-4-0/lib/assets/.keep +0 -0
- data/examples/rails-4-0/lib/tasks/.keep +0 -0
- data/examples/rails-4-0/log/.keep +0 -0
- data/examples/rails-4-0/public/404.html +58 -0
- data/examples/rails-4-0/public/422.html +58 -0
- data/examples/rails-4-0/public/500.html +57 -0
- data/examples/rails-4-0/public/favicon.ico +0 -0
- data/examples/rails-4-0/public/robots.txt +5 -0
- data/examples/rails-4-0/test/controllers/.keep +0 -0
- data/examples/rails-4-0/test/fixtures/.keep +0 -0
- data/examples/rails-4-0/test/helpers/.keep +0 -0
- data/examples/rails-4-0/test/integration/.keep +0 -0
- data/examples/rails-4-0/test/mailers/.keep +0 -0
- data/examples/rails-4-0/test/models/.keep +0 -0
- data/examples/rails-4-0/test/test_helper.rb +15 -0
- data/gemfiles/middleman-3.1.x.gemfile +5 -0
- data/gemfiles/rails-3.2.x.gemfile +5 -0
- data/gemfiles/rails-4.0.x.gemfile +5 -0
- data/lib/multi_sync.rb +92 -0
- data/lib/multi_sync/client.rb +243 -0
- data/lib/multi_sync/configuration.rb +36 -0
- data/lib/multi_sync/environment.rb +37 -0
- data/lib/multi_sync/extensions/middleman.rb +22 -0
- data/lib/multi_sync/extensions/rails.rb +20 -0
- data/lib/multi_sync/extensions/rails/asset_sync.rb +44 -0
- data/lib/multi_sync/extensions/rails/railtie.rb +11 -0
- data/lib/multi_sync/logging.rb +60 -0
- data/lib/multi_sync/mixins/log_helper.rb +9 -0
- data/lib/multi_sync/mixins/pluralize_helper.rb +15 -0
- data/lib/multi_sync/resource.rb +84 -0
- data/lib/multi_sync/resources/local_resource.rb +30 -0
- data/lib/multi_sync/resources/remote_resource.rb +32 -0
- data/lib/multi_sync/source.rb +40 -0
- data/lib/multi_sync/sources/local_source.rb +17 -0
- data/lib/multi_sync/sources/manifest_source.rb +82 -0
- data/lib/multi_sync/target.rb +34 -0
- data/lib/multi_sync/targets/aws_target.rb +80 -0
- data/lib/multi_sync/targets/local_target.rb +58 -0
- data/lib/multi_sync/version.rb +3 -0
- data/lib/tasks/multi_sync_rails.rake +15 -0
- data/multi_sync.gemspec +35 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/support/celluloid.rb +14 -0
- data/spec/support/fakefs.rb +7 -0
- data/spec/support/fog.rb +25 -0
- data/spec/support/pry.rb +6 -0
- data/spec/support/timecop.rb +2 -0
- data/spec/unit/multi_sync/client_spec.rb +301 -0
- data/spec/unit/multi_sync/configuration_spec.rb +92 -0
- data/spec/unit/multi_sync/resources/local_resource_spec.rb +55 -0
- data/spec/unit/multi_sync/sources/local_source_spec.rb +48 -0
- data/spec/unit/multi_sync/sources/manifest_source_spec.rb +57 -0
- data/spec/unit/multi_sync/targets/aws_target_spec.rb +60 -0
- data/spec/unit/multi_sync/targets/local_target_spec.rb +41 -0
- data/spec/unit/multi_sync_spec.rb +55 -0
- metadata +377 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 15f64f882b07eb32c2ab67b3a86aebfce1c41c06
|
|
4
|
+
data.tar.gz: f35664cd52f5bf38d99156140f0c56aa1aa09e91
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 40c4bfece43530dbc54002bb4b59787bfa59f28acca1085772de7f0a22c83be9577a2b30fe47943d5f25f269b865a1c6fdc3ce55ed327143d80b7414c48cea4e
|
|
7
|
+
data.tar.gz: 845d7cc8cd79ab528445f057c0957a4802d7dcf4296be83fe99b1697a2867018052cfc8c64f5b5d4d597f29aeb1ecb37bd71c905fa39d8b27c8018b10861884d
|
data/.document
ADDED
data/.gitignore
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
*.gem
|
|
2
|
+
*.rbc
|
|
3
|
+
.bundle
|
|
4
|
+
.config
|
|
5
|
+
.yardoc
|
|
6
|
+
Gemfile.lock
|
|
7
|
+
InstalledFiles
|
|
8
|
+
_yardoc
|
|
9
|
+
coverage
|
|
10
|
+
doc/
|
|
11
|
+
lib/bundler/man
|
|
12
|
+
pkg
|
|
13
|
+
rdoc
|
|
14
|
+
spec/reports
|
|
15
|
+
test/tmp
|
|
16
|
+
test/version_tmp
|
|
17
|
+
tmp
|
|
18
|
+
bin
|
|
19
|
+
/examples/rails-4-0/public/assets/
|
|
20
|
+
/examples/rails-3-2/public/assets/
|
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
AllCops:
|
|
2
|
+
Includes:
|
|
3
|
+
- Rakefile
|
|
4
|
+
- Gemfile
|
|
5
|
+
Excludes:
|
|
6
|
+
- script/**
|
|
7
|
+
- vendor/**
|
|
8
|
+
- bin/**
|
|
9
|
+
- examples/**
|
|
10
|
+
- gemfiles/**
|
|
11
|
+
LineLength:
|
|
12
|
+
Enabled: false
|
|
13
|
+
MethodLength:
|
|
14
|
+
Enabled: false
|
|
15
|
+
ClassLength:
|
|
16
|
+
Enabled: false
|
|
17
|
+
Documentation:
|
|
18
|
+
Enabled: false
|
|
19
|
+
Encoding:
|
|
20
|
+
Enabled: false
|
|
21
|
+
Blocks:
|
|
22
|
+
Enabled: false
|
|
23
|
+
AlignParameters:
|
|
24
|
+
Enabled: false
|
|
25
|
+
HashSyntax:
|
|
26
|
+
EnforcedStyle: ruby19
|
data/.travis.yml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
language: ruby
|
|
2
|
+
cache: bundler
|
|
3
|
+
bundler_args: --without development
|
|
4
|
+
rvm:
|
|
5
|
+
- ruby-head
|
|
6
|
+
- jruby-head
|
|
7
|
+
- 2.1.0
|
|
8
|
+
- 2.0.0
|
|
9
|
+
- 1.9.3
|
|
10
|
+
- rbx-19mode
|
|
11
|
+
- jruby-19mode
|
|
12
|
+
# gemfile:
|
|
13
|
+
# - gemfiles/Gemfile.middleman-3.1.x
|
|
14
|
+
# - gemfiles/Gemfile.rails-3.2.x
|
|
15
|
+
# - Gemfile
|
|
16
|
+
matrix:
|
|
17
|
+
fast_finish: true
|
|
18
|
+
allow_failures:
|
|
19
|
+
- rvm: ruby-head
|
|
20
|
+
- rvm: jruby-head
|
|
21
|
+
- rvm: rbx-19mode
|
|
22
|
+
- rvm: jruby-19mode
|
|
23
|
+
notifications:
|
|
24
|
+
email: false
|
data/.yardopts
ADDED
data/CHANGELOG.md
ADDED
|
File without changes
|
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
## Contributing
|
|
2
|
+
In the spirit of [free software][free-sw], **everyone** is encouraged to help
|
|
3
|
+
improve this project.
|
|
4
|
+
|
|
5
|
+
[free-sw]: http://www.fsf.org/licensing/essays/free-sw.html
|
|
6
|
+
|
|
7
|
+
Here are some ways *you* can contribute:
|
|
8
|
+
|
|
9
|
+
* by using alpha, beta, and prerelease versions
|
|
10
|
+
* by reporting bugs
|
|
11
|
+
* by suggesting new features
|
|
12
|
+
* by writing or editing documentation
|
|
13
|
+
* by writing specifications
|
|
14
|
+
* by writing code (**no patch is too small**: fix typos, add comments, clean up
|
|
15
|
+
inconsistent whitespace)
|
|
16
|
+
* by refactoring code
|
|
17
|
+
* by closing [issues][]
|
|
18
|
+
* by reviewing patches
|
|
19
|
+
|
|
20
|
+
[issues]: https://github.com/karlfreeman/multi_sync/issues
|
|
21
|
+
|
|
22
|
+
## Submitting an Issue
|
|
23
|
+
We use the [GitHub issue tracker][issues] to track bugs and features. Before
|
|
24
|
+
submitting a bug report or feature request, check to make sure it hasn't
|
|
25
|
+
already been submitted. When submitting a bug report, please include a [Gist][]
|
|
26
|
+
that includes a stack trace and any details that may be necessary to reproduce
|
|
27
|
+
the bug, including your gem version, Ruby version, and operating system.
|
|
28
|
+
Ideally, a bug report should include a pull request with failing specs.
|
|
29
|
+
|
|
30
|
+
[gist]: https://gist.github.com/
|
|
31
|
+
|
|
32
|
+
## Submitting a Pull Request
|
|
33
|
+
1. [Fork the repository.][fork]
|
|
34
|
+
2. [Create a topic branch.][branch]
|
|
35
|
+
3. Add specs for your unimplemented feature or bug fix.
|
|
36
|
+
4. Run `bundle exec rake spec`. If your specs pass, return to step 3.
|
|
37
|
+
5. Implement your feature or bug fix.
|
|
38
|
+
6. Run `bundle exec rake spec`. If your specs fail, return to step 5.
|
|
39
|
+
7. Add, commit, and push your changes.
|
|
40
|
+
8. [Submit a pull request.][pr]
|
|
41
|
+
|
|
42
|
+
[fork]: http://help.github.com/fork-a-repo/
|
|
43
|
+
[branch]: http://learn.github.com/p/branching.html
|
|
44
|
+
[pr]: http://help.github.com/send-pull-requests/
|
data/Gemfile
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gemspec
|
|
4
|
+
|
|
5
|
+
gem 'sprockets'
|
|
6
|
+
gem 'celluloid', github: 'celluloid/celluloid'
|
|
7
|
+
|
|
8
|
+
group :developement do
|
|
9
|
+
gem 'rubocop', github: 'bbatsov/rubocop'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
group :test do
|
|
13
|
+
gem 'rake', '~> 10.0'
|
|
14
|
+
gem 'fakefs', '~> 0.4.3'
|
|
15
|
+
gem 'rspec'
|
|
16
|
+
gem 'timecop'
|
|
17
|
+
end
|
data/LICENSE.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2013-2014 Karl Freeman
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# MultiSync
|
|
2
|
+
|
|
3
|
+
:heavy_exclamation_mark: **a WIP that is functioning but just a warning, not finished yet.** :heavy_exclamation_mark:
|
|
4
|
+
|
|
5
|
+
A flexible synchronisation library for your assets.
|
|
6
|
+
|
|
7
|
+
At MultiSync's core is [Celluloid](http://celluloid.io) allowing for the synchronisation of assets to be truly parallel. Each target you define creates a pool of resources which allows for parallel execution of uploads and deletes. Meaning that when your synchronising thousands of files, you get alot more :boom: for your :dollar:.
|
|
8
|
+
|
|
9
|
+
MultiSync tries to expose its asset synchronisation in a flexible way, allowing for it to be used in `Rails`, `Sinatra (WIP)`, `Rake (WIP)` and `Plain old ruby` as well as extensions for `Middleman (WIP)`, `Nanoc (WIP)` and others. Listed below are examples of how to get setup.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
gem 'multi_sync', '~> 0.0.1'
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
```ruby
|
|
18
|
+
require 'multi_sync'
|
|
19
|
+
|
|
20
|
+
MultiSync.configuration do |config|
|
|
21
|
+
# config.verbose = false # turn on verbose logging (defaults to false)
|
|
22
|
+
# config.force = false # force syncing of outdated_files (defaults to false)
|
|
23
|
+
# config.run_on_build = true # when within a framework which `builds` assets, whether to sync afterwards (defaults to true)
|
|
24
|
+
# config.sync_outdated_files = true # when an outdated file is found whether to replace it (defaults to true)
|
|
25
|
+
# config.delete_abandoned_files = true # when an abondoned file is found whether to remove it (defaults to true)
|
|
26
|
+
# config.upload_missing_files = true # when a missing file is found whether to upload it (defaults to true)
|
|
27
|
+
# config.target_pool_size = 8 # how many threads you would like to open for each target (defaults to the amount of CPU core's your machine has)
|
|
28
|
+
# config.max_sync_attempts = 1 # how many times a file should be retried if there was an error during sync (defaults to 3)
|
|
29
|
+
end
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Fog credentials support
|
|
33
|
+
|
|
34
|
+
`MultiSync` supports utilising [Fog Credentials](http://fog.io/about/getting_started.html#credentials). Simply specify either a `FOG_RC` or `.fog` and we'll use it as the base for any credentials used in a target.
|
|
35
|
+
|
|
36
|
+
## Features / Usage Examples
|
|
37
|
+
|
|
38
|
+
### AssetSync compatibility
|
|
39
|
+
|
|
40
|
+
Many people use [AssetSync](https://github.com/rumblelabs/asset_sync) and for `MultiSync`'s first release compatibility with it has been built in. When within a `Rails` environment `MultiSync` will check for `asset_sync.yml` and read in its settings. You should be able to simply require `multi_sync` and try things out.
|
|
41
|
+
|
|
42
|
+
#### Unsupported features
|
|
43
|
+
|
|
44
|
+
- `AssetSync`'s environment variables
|
|
45
|
+
- `AssetSync`'s gzip_compression hack
|
|
46
|
+
|
|
47
|
+
### Rails
|
|
48
|
+
|
|
49
|
+
`MultiSync` prefers ruby backed configuration instead of `YAML` so you'll need to create an initializer `/config/initializers/multi_sync` for `MultiSync`.
|
|
50
|
+
|
|
51
|
+
```ruby
|
|
52
|
+
MultiSync.prepare do
|
|
53
|
+
|
|
54
|
+
source :public, {
|
|
55
|
+
type: :manifest, # load files from a Sprockets based manifest
|
|
56
|
+
source_dir: '/path_to_your_build_folder',
|
|
57
|
+
targets: [:assets] # an array of target names that this source should sync against
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
target :assets, {
|
|
61
|
+
type: :aws, # :aws is the target's type, current options are :aws
|
|
62
|
+
target_dir: 'your_aws_bucket',
|
|
63
|
+
destination_dir: 'an_optional_directory_inside_your_aws_bucket',
|
|
64
|
+
credentials: {
|
|
65
|
+
region: 'us-east-1',
|
|
66
|
+
aws_access_key_id: 'super_secret',
|
|
67
|
+
aws_secret_access_key: 'super_secret'
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
`MultiSync.prepare` simply bootstraps `MultiSync` which is then ran during `rake assets:precompile`. By having `multi_sync` included in your `Gemfile`, the rake task `rake assets:sync` will be available.
|
|
75
|
+
|
|
76
|
+
### Plain Old Ruby
|
|
77
|
+
|
|
78
|
+
```ruby
|
|
79
|
+
MultiSync.run do
|
|
80
|
+
|
|
81
|
+
source :build, {
|
|
82
|
+
type: :local, # :local is the source's type, current options are :local, :manifest
|
|
83
|
+
source_dir: '/path_to_your_build_folder',
|
|
84
|
+
targets: [:assets] # an array of target names that this source should sync against
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
target :assets, {
|
|
88
|
+
type: :aws, # :aws is the target's type, current options are :aws
|
|
89
|
+
target_dir: 'your_aws_bucket',
|
|
90
|
+
destination_dir: 'an_optional_directory_inside_your_aws_bucket',
|
|
91
|
+
credentials: {
|
|
92
|
+
region: 'us-east-1',
|
|
93
|
+
aws_access_key_id: 'super_secret',
|
|
94
|
+
aws_secret_access_key: 'super_secret'
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Badges
|
|
102
|
+
|
|
103
|
+
[][gem]
|
|
104
|
+
[][travis]
|
|
105
|
+
[][codeclimate]
|
|
106
|
+
[][gittip]
|
|
107
|
+
|
|
108
|
+
## Supported Storage Services
|
|
109
|
+
|
|
110
|
+
Behind the scenes we're using [Fog::Storage](http://fog.io/storage) which allows us to support the most popular storage providers
|
|
111
|
+
|
|
112
|
+
- [Amazon S3](http://aws.amazon.com/s3)
|
|
113
|
+
- [Rackspace CloudFiles](http://www.rackspace.com/cloud/files)
|
|
114
|
+
- [Google Cloud Storage](https://developers.google.com/storage)
|
|
115
|
+
|
|
116
|
+
## Supported Ruby Versions
|
|
117
|
+
|
|
118
|
+
This library aims to support and is [tested against][travis] the following Ruby
|
|
119
|
+
implementations:
|
|
120
|
+
|
|
121
|
+
- Ruby 2.1.0
|
|
122
|
+
- Ruby 2.0.0
|
|
123
|
+
- Ruby 1.9.3
|
|
124
|
+
- [JRuby][jruby]
|
|
125
|
+
- [Rubinius][rubinius]
|
|
126
|
+
|
|
127
|
+
# Credits
|
|
128
|
+
|
|
129
|
+
[gem]: https://rubygems.org/gems/multi_sync
|
|
130
|
+
[travis]: http://travis-ci.org/karlfreeman/multi_sync
|
|
131
|
+
[codeclimate]: https://codeclimate.com/github/karlfreeman/multi_sync
|
|
132
|
+
[gittip]: https://www.gittip.com/karlfreeman
|
|
133
|
+
[jruby]: http://www.jruby.org
|
|
134
|
+
[rubinius]: http://rubini.us
|
data/Rakefile
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'bundler'
|
|
2
|
+
Bundler.setup
|
|
3
|
+
Bundler::GemHelper.install_tasks
|
|
4
|
+
|
|
5
|
+
require 'rspec/core/rake_task'
|
|
6
|
+
desc 'Run all examples'
|
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
8
|
+
|
|
9
|
+
begin
|
|
10
|
+
require 'yard'
|
|
11
|
+
YARD::Rake::YardocTask.new
|
|
12
|
+
rescue LoadError
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
begin
|
|
16
|
+
require 'rubocop/rake_task'
|
|
17
|
+
desc 'Run rubocop'
|
|
18
|
+
Rubocop::RakeTask.new(:rubocop)
|
|
19
|
+
rescue LoadError
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
namespace :spec do
|
|
23
|
+
|
|
24
|
+
desc 'Run specs with middleman'
|
|
25
|
+
task :middleman do
|
|
26
|
+
ENV['BUNDLE_GEMFILE'] = 'gemfiles/middleman-3.1.x.gemfile'
|
|
27
|
+
Rake::Task['spec'].execute
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
desc 'Run specs with rails 3.2'
|
|
31
|
+
task :rails_3_2 do
|
|
32
|
+
ENV['BUNDLE_GEMFILE'] = 'gemfiles/rails-3.2.x.gemfile'
|
|
33
|
+
Rake::Task['spec'].execute
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
desc 'Run specs with rails 4.0'
|
|
37
|
+
task :rails_4_0 do
|
|
38
|
+
ENV['BUNDLE_GEMFILE'] = 'gemfiles/rails-4.0.x.gemfile'
|
|
39
|
+
Rake::Task['spec'].execute
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
task default: :spec
|
|
45
|
+
task test: :spec
|
data/examples/custom.rb
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require "multi_sync"
|
|
2
|
+
|
|
3
|
+
MultiSync.configuration do |config|
|
|
4
|
+
# config.verbose = false # turn on verbose logging (defaults to false)
|
|
5
|
+
# config.force = false # force syncing of outdated_files (defaults to false)
|
|
6
|
+
# config.run_on_build = true # when within a framework which `builds` assets, whether to sync afterwards (defaults to true)
|
|
7
|
+
# config.sync_outdated_files = true # when an outdated file is found whether to replace it (defaults to true)
|
|
8
|
+
# config.delete_abandoned_files = true # when an abondoned file is found whether to remove it (defaults to true)
|
|
9
|
+
# config.upload_missing_files = true # when a missing file is found whether to upload it (defaults to true)
|
|
10
|
+
# config.target_pool_size = 8 # how many threads you would like to open for each target (defaults to the amount of CPU core's your machine has)
|
|
11
|
+
# config.max_sync_attempts = 1 # how many times a file should be retried if there was an error during sync (defaults to 3)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
MultiSync.run do
|
|
15
|
+
|
|
16
|
+
source :build {
|
|
17
|
+
:type => :local, # :local is the source's type, current options are :local, :manifest
|
|
18
|
+
:source_dir => "/path_to_your_build_folder",
|
|
19
|
+
:targets => [ :www ] # an array of target names that this source should sync against
|
|
20
|
+
# targets optional? default to all
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
target :www {
|
|
24
|
+
:type => :aws, # :aws is the target's type, current options are :aws
|
|
25
|
+
:target_dir => "your_aws_bucket",
|
|
26
|
+
:destination_dir => "an_optional_directory_inside_your_aws_bucket",
|
|
27
|
+
:credentials => {
|
|
28
|
+
:region => "us-east-1",
|
|
29
|
+
:aws_access_key_id => "super_secret",
|
|
30
|
+
:aws_secret_access_key => "super_secret"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
|
2
|
+
#
|
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
|
5
|
+
# git config --global core.excludesfile ~/.gitignore_global
|
|
6
|
+
|
|
7
|
+
# Ignore bundler config
|
|
8
|
+
/.bundle
|
|
9
|
+
|
|
10
|
+
# Ignore the default SQLite database.
|
|
11
|
+
/db/*.sqlite3
|
|
12
|
+
|
|
13
|
+
# Ignore all logfiles and tempfiles.
|
|
14
|
+
/log/*.log
|
|
15
|
+
/tmp
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gem 'rails', '~> 3.2'
|
|
4
|
+
|
|
5
|
+
# Bundle edge Rails instead:
|
|
6
|
+
# gem 'rails', :git => 'git://github.com/rails/rails.git'
|
|
7
|
+
|
|
8
|
+
gem 'sqlite3'
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# Gems used only for assets and not required
|
|
12
|
+
# in production environments by default.
|
|
13
|
+
group :assets do
|
|
14
|
+
gem 'sass-rails', '~> 3.2.3'
|
|
15
|
+
gem 'coffee-rails', '~> 3.2.1'
|
|
16
|
+
|
|
17
|
+
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
|
18
|
+
# gem 'therubyracer', :platforms => :ruby
|
|
19
|
+
|
|
20
|
+
gem 'uglifier', '>= 1.0.3'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
gem 'jquery-rails'
|
|
24
|
+
|
|
25
|
+
# To use ActiveModel has_secure_password
|
|
26
|
+
# gem 'bcrypt-ruby', '~> 3.0.0'
|
|
27
|
+
|
|
28
|
+
# To use Jbuilder templates for JSON
|
|
29
|
+
# gem 'jbuilder'
|
|
30
|
+
|
|
31
|
+
# Use unicorn as the app server
|
|
32
|
+
# gem 'unicorn'
|
|
33
|
+
|
|
34
|
+
# Deploy with Capistrano
|
|
35
|
+
# gem 'capistrano'
|
|
36
|
+
|
|
37
|
+
# To use debugger
|
|
38
|
+
# gem 'debugger'
|
|
39
|
+
|
|
40
|
+
gem 'awesome_print', :require => 'awesome_print'
|
|
41
|
+
gem 'celluloid', :github => 'celluloid/celluloid'
|
|
42
|
+
gem 'multi_mime', :github => 'karlfreeman/multi_mime'
|
|
43
|
+
gem 'multi_sync', :path => '../../'
|