o2webappizer 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -0
- data/lib/o2webappizer/app_builder.rb +45 -13
- data/lib/o2webappizer/generators/app_generator.rb +1 -0
- data/lib/o2webappizer/version.rb +1 -1
- data/o2webappizer.gemspec +1 -1
- data/templates/.gitignore.tt +1 -0
- data/templates/Capfile +19 -0
- data/templates/Gemfile.tt +7 -4
- data/templates/Vagrantfile.tt +74 -0
- data/templates/app/assets/javascripts/application.js.coffee +1 -1
- data/templates/app/views/spree/shared/_head.html.erb +2 -2
- data/templates/config/Backup/config.rb +124 -0
- data/templates/config/Backup/models/db_backup.rb.tt +91 -0
- data/templates/config/deploy.rb.tt +92 -0
- data/templates/config/deploy/production.rb +66 -0
- data/templates/config/deploy/staging.rb +66 -0
- data/templates/config/deploy/vagrant.rb +66 -0
- data/templates/config/initializers_tt/mail_interceptor.rb +21 -0
- data/templates/config/nginx.app.conf.erb +82 -0
- data/templates/config/nginx.conf.erb +102 -0
- data/templates/config/routes.rb.tt +3 -0
- data/templates/config/secrets.yml.tt +10 -0
- data/templates/config/sunzi/files/authorized_keys +1 -0
- data/templates/config/sunzi/files/sudoers +1 -0
- data/templates/config/sunzi/install.sh +14 -0
- data/templates/config/sunzi/recipes/libraries.sh +24 -0
- data/templates/config/sunzi/recipes/mysql.sh +19 -0
- data/templates/config/sunzi/recipes/nodejs.sh +6 -0
- data/templates/config/sunzi/recipes/passenger.sh +19 -0
- data/templates/config/sunzi/recipes/postgres.sh +14 -0
- data/templates/config/sunzi/recipes/ruby.sh +28 -0
- data/templates/config/sunzi/recipes/setup.sh +11 -0
- data/templates/config/sunzi/recipes/sunzi.sh +99 -0
- data/templates/config/sunzi/recipes/sysstat.sh +8 -0
- data/templates/config/sunzi/recipes/update.sh +2 -0
- data/templates/config/sunzi/recipes/user.sh +23 -0
- data/templates/config/sunzi/roles/admin.sh +20 -0
- data/templates/config/sunzi/roles/deployer.sh +7 -0
- data/templates/config/sunzi/roles/updater.sh +5 -0
- data/templates/config/sunzi/sunzi.yml.tt +26 -0
- data/templates/db/migrate/20160114191411_add_mail_interceptors_to_settings.rb +12 -0
- data/templates/lib/middleware/turbo_dev.rb +40 -0
- data/templates/lib/tasks/app.rake +3 -0
- data/templates/lib/tasks/db.rake +9 -0
- data/templates/schedule.rb +47 -0
- data/templates/vendor/assets/javascripts/modernizr.custom.js +3 -0
- metadata +37 -10
- data/templates/vendor/assets/javascripts/modernizr.js +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e343d602469ec85e307a91bcda814732aa7a51c
|
4
|
+
data.tar.gz: 75077099ddbef921b788bdc63968991751d0d71e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3da3608109c9e1e898ab7f1c58657f19bcf1967488a8ec73a69bd62f1925a609fc0a09eabe24b2e680b62007605c8a00c42618a32eda67375370172d11207abd
|
7
|
+
data.tar.gz: 77cf7fbf1b14cf789ff9e3c04097e310d06363c4f44870b39227e3b717740e09b3327ce48461da238e9c937be9d57bce7d94c575d16a5582efa0224ba1d94f0c
|
data/README.md
CHANGED
@@ -25,9 +25,20 @@ After checking out the repo, run `bin/setup` to install dependencies. You can al
|
|
25
25
|
|
26
26
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
27
27
|
|
28
|
+
## Vagrant
|
29
|
+
|
30
|
+
Add `192.168.33.37 app-name.dev` to your `/etc/hosts` file.
|
31
|
+
After `vagrant up`, connect with `vagrant ssh` and add your public ssh key `id_rsa.pub` to `~/.ssh/authorized_keys`.
|
32
|
+
|
28
33
|
## TODO
|
29
34
|
|
35
|
+
* Gzip yaml_db
|
36
|
+
* Moneybird i18n-workflow
|
37
|
+
* Rack-attack + Log rotate
|
38
|
+
* Devise Confirmed At option
|
30
39
|
* Rspec
|
40
|
+
* Redis + Que
|
41
|
+
* Solidus plugins (CMSConnector, EasyPost, Mini-cart, Wishlist, Volume Pricing, Custom Promos, Related Products, Variant Options, Reviews, Auctions)
|
31
42
|
|
32
43
|
## Contributing
|
33
44
|
|
@@ -36,12 +36,19 @@ module O2webappizer
|
|
36
36
|
empty_directory 'config'
|
37
37
|
|
38
38
|
inside 'config' do
|
39
|
-
|
40
|
-
|
39
|
+
directory 'Backup'
|
40
|
+
directory 'deploy'
|
41
|
+
directory 'sunzi'
|
42
|
+
template 'deploy.rb'
|
43
|
+
copy_file 'nginx.app.conf.erb'
|
44
|
+
copy_file 'nginx.conf.erb'
|
45
|
+
|
46
|
+
template 'routes.rb'
|
47
|
+
template 'application.rb'
|
41
48
|
configure_application
|
42
|
-
template
|
43
|
-
template
|
44
|
-
template
|
49
|
+
template 'database.yml'
|
50
|
+
template 'environment.rb'
|
51
|
+
template 'secrets.yml'
|
45
52
|
directory 'environments'
|
46
53
|
|
47
54
|
inside 'environments' do
|
@@ -78,6 +85,11 @@ module O2webappizer
|
|
78
85
|
def database_yml
|
79
86
|
end
|
80
87
|
|
88
|
+
def lib
|
89
|
+
directory 'lib'
|
90
|
+
empty_directory_with_keep_file 'lib/assets'
|
91
|
+
end
|
92
|
+
|
81
93
|
def public_directory
|
82
94
|
directory 'public'
|
83
95
|
end
|
@@ -87,7 +99,7 @@ module O2webappizer
|
|
87
99
|
|
88
100
|
inside 'vendor/assets' do
|
89
101
|
copy_file 'javascripts/jquery.lazyload.js'
|
90
|
-
copy_file 'javascripts/modernizr.js'
|
102
|
+
copy_file 'javascripts/modernizr.custom.js'
|
91
103
|
directory 'javascripts/rails_admin'
|
92
104
|
copy_file 'stylesheets/nprogress-variables.sass'
|
93
105
|
directory 'stylesheets/rails_admin'
|
@@ -101,6 +113,9 @@ module O2webappizer
|
|
101
113
|
|
102
114
|
def leftovers
|
103
115
|
template '.ruby-version'
|
116
|
+
copy_file 'Capfile'
|
117
|
+
copy_file 'schedule.rb'
|
118
|
+
template 'Vagrantfile'
|
104
119
|
|
105
120
|
after_bundle do
|
106
121
|
rake 'railties:install:migrations'
|
@@ -183,10 +198,17 @@ module O2webappizer
|
|
183
198
|
end
|
184
199
|
|
185
200
|
def configure_development
|
201
|
+
insert_into_file 'development.rb', %{require_relative '../../lib/middleware/turbo_dev'\n\n},
|
202
|
+
before: %{Rails.application.configure do}
|
203
|
+
|
186
204
|
environment(<<-DEV.strip_heredoc.indent(2), env: 'development')
|
187
205
|
|
188
|
-
config.
|
189
|
-
|
206
|
+
config.middleware.insert 0, Middleware::TurboDev
|
207
|
+
|
208
|
+
config.action_controller.asset_host = '//localhost:3000'
|
209
|
+
config.action_mailer.asset_host = '//localhost:3000'
|
210
|
+
config.action_mailer.delivery_method = :letter_opener_web
|
211
|
+
config.action_mailer.default_url_options = { :host => "localhost:3000" }
|
190
212
|
DEV
|
191
213
|
end
|
192
214
|
|
@@ -203,11 +225,21 @@ module O2webappizer
|
|
203
225
|
end
|
204
226
|
|
205
227
|
def configure_env(name, level)
|
206
|
-
environment(<<-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
228
|
+
environment(<<-CONFIG.strip_heredoc.indent(2), env: name)
|
229
|
+
|
230
|
+
config.action_controller.asset_host = '//todo.todo'
|
231
|
+
config.action_mailer.asset_host = '//todo.todo'
|
232
|
+
config.action_mailer.delivery_method = :smtp
|
233
|
+
config.action_mailer.smtp_settings = {
|
234
|
+
address: 'smtp.mailgun.org',
|
235
|
+
port: 587,
|
236
|
+
domain: 'todo.mailgun.org',
|
237
|
+
user_name: 'todo',
|
238
|
+
password: 'todo',
|
239
|
+
authentication: 'plain',
|
240
|
+
}
|
241
|
+
config.action_mailer.default_url_options = { :host => 'todo.todo' }
|
242
|
+
CONFIG
|
211
243
|
gsub_file "#{name}.rb", /# config.action_dispatch.+NGINX/,
|
212
244
|
"config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX"
|
213
245
|
gsub_file "#{name}.rb", /config.log_level = :debug/,
|
data/lib/o2webappizer/version.rb
CHANGED
data/o2webappizer.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.add_dependency 'rails', "~> #{O2webappizer::RAILS_VERSION}", ">= #{O2webappizer::RAILS_VERSION}.0"
|
25
25
|
|
26
|
-
spec.add_runtime_dependency 'bundler', '~> 1.
|
26
|
+
spec.add_runtime_dependency 'bundler', '~> 1.3'
|
27
27
|
|
28
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
29
29
|
end
|
data/templates/.gitignore.tt
CHANGED
data/templates/Capfile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Load DSL and set up stages
|
2
|
+
require 'capistrano/setup'
|
3
|
+
|
4
|
+
# Include default deployment tasks
|
5
|
+
require 'capistrano/deploy'
|
6
|
+
|
7
|
+
# Include tasks from other gems included in your Gemfile
|
8
|
+
require 'capistrano/rbenv'
|
9
|
+
require 'capistrano/bundler'
|
10
|
+
require 'capistrano/rails/assets'
|
11
|
+
require 'capistrano/rails/migrations'
|
12
|
+
require 'capistrano/o2web_recipes'
|
13
|
+
require 'capistrano/nginx'
|
14
|
+
require 'capistrano/passenger'
|
15
|
+
require 'capistrano/faster_assets'
|
16
|
+
require 'whenever/capistrano'
|
17
|
+
|
18
|
+
# Load custom tasks from `lib/capistrano/tasks` if you have any defined
|
19
|
+
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
|
data/templates/Gemfile.tt
CHANGED
@@ -3,10 +3,12 @@ source 'https://rubygems.org'
|
|
3
3
|
|
4
4
|
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
5
5
|
gem 'rails', github: 'rails/rails', branch: '4-2-stable'
|
6
|
+
gem 'rake', '~> 10.4'
|
6
7
|
# Use postgresql as the database for Active Record
|
7
8
|
gem 'pg', '~> 0.15'
|
8
9
|
# Use SCSS for stylesheets
|
9
10
|
gem 'sassc-rails', github: 'Shopify/sassc-rails', branch: 'sprockets-rails-3'
|
11
|
+
gem 'sprockets-derailleur', github: 'bonobos/sprockets-derailleur'
|
10
12
|
# Use Uglifier as compressor for JavaScript assets
|
11
13
|
gem 'uglifier', '>= 1.3.0'
|
12
14
|
# Use CoffeeScript for .coffee assets and views
|
@@ -32,6 +34,8 @@ group :development, :test do
|
|
32
34
|
gem 'capistrano-rbenv', '~> 2.0'
|
33
35
|
gem 'capistrano3-nginx', '~> 2.0'
|
34
36
|
gem 'capistrano-passenger'
|
37
|
+
gem 'capistrano-o2web-recipes', github: 'o2web/capistrano-o2web-recipes', branch: 'master'
|
38
|
+
gem 'capistrano-faster-assets', '~> 1.0'
|
35
39
|
# TODO: gem 'capistrano-maintenance', '~> 1.0'
|
36
40
|
|
37
41
|
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
@@ -42,14 +46,13 @@ group :development, :test do
|
|
42
46
|
gem 'quiet_assets'
|
43
47
|
gem 'coffee-rails-source-paths', github: 'Machiaweliczny/coffee-rails-source-paths'
|
44
48
|
gem 'sass-rails-source-maps', github: 'inopinatus/sass-rails-source-maps'
|
45
|
-
<% unless options.solidus? -%>
|
46
49
|
gem 'letter_opener'
|
47
50
|
gem 'letter_opener_web', '~> 1.2.0'
|
48
|
-
<% end -%>
|
49
51
|
end
|
50
52
|
|
51
|
-
|
52
|
-
gem '
|
53
|
+
group :staging, :vagrant do
|
54
|
+
gem 'mail_interceptor'
|
55
|
+
end
|
53
56
|
|
54
57
|
# Scheduling
|
55
58
|
gem 'whenever', require: false
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# All Vagrant configuration is done below. The "2" in Vagrant.configure
|
5
|
+
# configures the configuration version (we support older styles for
|
6
|
+
# backwards compatibility). Please don't change it unless you know what
|
7
|
+
# you're doing.
|
8
|
+
Vagrant.configure(2) do |config|
|
9
|
+
# The most common configuration options are documented and commented below.
|
10
|
+
# For a complete reference, please see the online documentation at
|
11
|
+
# https://docs.vagrantup.com.
|
12
|
+
|
13
|
+
# Every Vagrant development environment requires a box. You can search for
|
14
|
+
# boxes at https://atlas.hashicorp.com/search.
|
15
|
+
config.vm.box = "ubuntu/trusty64"
|
16
|
+
|
17
|
+
# Disable automatic box update checking. If you disable this, then
|
18
|
+
# boxes will only be checked for updates when the user runs
|
19
|
+
# `vagrant box outdated`. This is not recommended.
|
20
|
+
# config.vm.box_check_update = false
|
21
|
+
|
22
|
+
# Create a forwarded port mapping which allows access to a specific port
|
23
|
+
# within the machine from a port on the host machine. In the example below,
|
24
|
+
# accessing "localhost:8080" will access port 80 on the guest machine.
|
25
|
+
# config.vm.network "forwarded_port", guest: 80, host: 8080
|
26
|
+
|
27
|
+
# Create a private network, which allows host-only access to the machine
|
28
|
+
# using a specific IP.
|
29
|
+
config.vm.network "private_network", ip: "192.168.33.37"
|
30
|
+
|
31
|
+
# Create a public network, which generally matched to bridged network.
|
32
|
+
# Bridged networks make the machine appear as another physical device on
|
33
|
+
# your network.
|
34
|
+
# config.vm.network "public_network"
|
35
|
+
|
36
|
+
# Share an additional folder to the guest VM. The first argument is
|
37
|
+
# the path on the host to the actual folder. The second argument is
|
38
|
+
# the path on the guest to mount the folder. And the optional third
|
39
|
+
# argument is a set of non-required options.
|
40
|
+
# config.vm.synced_folder "../data", "/vagrant_data"
|
41
|
+
|
42
|
+
|
43
|
+
# Provider-specific configuration so you can fine-tune various
|
44
|
+
# backing providers for Vagrant. These expose provider-specific options.
|
45
|
+
# Example for VirtualBox:
|
46
|
+
#
|
47
|
+
config.vm.provider "virtualbox" do |vb|
|
48
|
+
# # Display the VirtualBox GUI when booting the machine
|
49
|
+
# vb.gui = true
|
50
|
+
#
|
51
|
+
# # Customize the amount of memory on the VM:
|
52
|
+
vb.memory = "2048"
|
53
|
+
end
|
54
|
+
|
55
|
+
# View the documentation for the provider you are using for more
|
56
|
+
# information on available options.
|
57
|
+
|
58
|
+
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
|
59
|
+
# such as FTP and Heroku are also available. See the documentation at
|
60
|
+
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
|
61
|
+
# config.push.define "atlas" do |push|
|
62
|
+
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
|
63
|
+
# end
|
64
|
+
|
65
|
+
# Enable provisioning with a shell script. Additional provisioners such as
|
66
|
+
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
|
67
|
+
# documentation for more information about their specific syntax and use.
|
68
|
+
# config.vm.provision "shell", inline: <<-SHELL
|
69
|
+
# sudo apt-get update
|
70
|
+
# sudo apt-get install -y apache2
|
71
|
+
# SHELL
|
72
|
+
config.vm.hostname = "<%= app_name.dasherize %>.dev"
|
73
|
+
# config.vm.synced_folders
|
74
|
+
end
|
@@ -5,9 +5,9 @@
|
|
5
5
|
<%== cms_meta_data_tags(meta_data_tags) %>
|
6
6
|
<%= canonical_tag(current_store.url) %>
|
7
7
|
<%= favicon_link_tag 'favicon.ico' %>
|
8
|
-
<%= stylesheet_link_tag 'spree/frontend/all', :
|
8
|
+
<%= stylesheet_link_tag 'spree/frontend/all', media: 'all', 'data-turbolinks-track' => true %>
|
9
9
|
<%= csrf_meta_tags %>
|
10
|
-
<%= javascript_include_tag 'spree/frontend/all' %>
|
10
|
+
<%= javascript_include_tag 'spree/frontend/all', 'data-turbolinks-track' => true %>
|
11
11
|
<!--[if lt IE 9]>
|
12
12
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6/html5shiv.min.js"></script>
|
13
13
|
<![endif]-->
|
@@ -0,0 +1,124 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
##
|
4
|
+
# Backup v4.x Configuration
|
5
|
+
#
|
6
|
+
# Documentation: http://meskyanichi.github.io/backup
|
7
|
+
# Issue Tracker: https://github.com/meskyanichi/backup/issues
|
8
|
+
|
9
|
+
##
|
10
|
+
# Config Options
|
11
|
+
#
|
12
|
+
# The options here may be overridden on the command line, but the result
|
13
|
+
# will depend on the use of --root-path on the command line.
|
14
|
+
#
|
15
|
+
# If --root-path is used on the command line, then all paths set here
|
16
|
+
# will be overridden. If a path (like --tmp-path) is not given along with
|
17
|
+
# --root-path, that path will use it's default location _relative to --root-path_.
|
18
|
+
#
|
19
|
+
# If --root-path is not used on the command line, a path option (like --tmp-path)
|
20
|
+
# given on the command line will override the tmp_path set here, but all other
|
21
|
+
# paths set here will be used.
|
22
|
+
#
|
23
|
+
# Note that relative paths given on the command line without --root-path
|
24
|
+
# are relative to the current directory. The root_path set here only applies
|
25
|
+
# to relative paths set here.
|
26
|
+
#
|
27
|
+
# ---
|
28
|
+
#
|
29
|
+
# Sets the root path for all relative paths, including default paths.
|
30
|
+
# May be an absolute path, or relative to the current working directory.
|
31
|
+
#
|
32
|
+
# root_path 'my/root'
|
33
|
+
#
|
34
|
+
# Sets the path where backups are processed until they're stored.
|
35
|
+
# This must have enough free space to hold apx. 2 backups.
|
36
|
+
# May be an absolute path, or relative to the current directory or +root_path+.
|
37
|
+
#
|
38
|
+
# tmp_path 'my/tmp'
|
39
|
+
#
|
40
|
+
# Sets the path where backup stores persistent information.
|
41
|
+
# When Backup's Cycler is used, small YAML files are stored here.
|
42
|
+
# May be an absolute path, or relative to the current directory or +root_path+.
|
43
|
+
#
|
44
|
+
# data_path 'my/data'
|
45
|
+
|
46
|
+
##
|
47
|
+
# Utilities
|
48
|
+
#
|
49
|
+
# If you need to use a utility other than the one Backup detects,
|
50
|
+
# or a utility can not be found in your $PATH.
|
51
|
+
#
|
52
|
+
# Utilities.configure do
|
53
|
+
# tar '/usr/bin/gnutar'
|
54
|
+
# redis_cli '/opt/redis/redis-cli'
|
55
|
+
# end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Logging
|
59
|
+
#
|
60
|
+
# Logging options may be set on the command line, but certain settings
|
61
|
+
# may only be configured here.
|
62
|
+
#
|
63
|
+
Logger.configure do
|
64
|
+
logfile.enabled = false
|
65
|
+
# console.quiet = true # Same as command line: --quiet
|
66
|
+
# logfile.max_bytes = 2_000_000 # Default: 500_000
|
67
|
+
# syslog.enabled = true # Same as command line: --syslog
|
68
|
+
# syslog.ident = 'my_app_backup' # Default: 'backup'
|
69
|
+
end
|
70
|
+
#
|
71
|
+
# Command line options will override those set here.
|
72
|
+
# For example, the following would override the example settings above
|
73
|
+
# to disable syslog and enable console output.
|
74
|
+
# backup perform --trigger my_backup --no-syslog --no-quiet
|
75
|
+
|
76
|
+
##
|
77
|
+
# Component Defaults
|
78
|
+
#
|
79
|
+
# Set default options to be applied to components in all models.
|
80
|
+
# Options set within a model will override those set here.
|
81
|
+
#
|
82
|
+
# Storage::S3.defaults do |s3|
|
83
|
+
# s3.access_key_id = "my_access_key_id"
|
84
|
+
# s3.secret_access_key = "my_secret_access_key"
|
85
|
+
# end
|
86
|
+
#
|
87
|
+
# Notifier::Mail.defaults do |mail|
|
88
|
+
# mail.from = 'sender@email.com'
|
89
|
+
# mail.to = 'receiver@email.com'
|
90
|
+
# mail.address = 'smtp.gmail.com'
|
91
|
+
# mail.port = 587
|
92
|
+
# mail.domain = 'your.host.name'
|
93
|
+
# mail.user_name = 'sender@email.com'
|
94
|
+
# mail.password = 'my_password'
|
95
|
+
# mail.authentication = 'plain'
|
96
|
+
# mail.encryption = :starttls
|
97
|
+
# end
|
98
|
+
|
99
|
+
##
|
100
|
+
# Preconfigured Models
|
101
|
+
#
|
102
|
+
# Create custom models with preconfigured components.
|
103
|
+
# Components added within the model definition will
|
104
|
+
# +add to+ the preconfigured components.
|
105
|
+
#
|
106
|
+
# preconfigure 'MyModel' do
|
107
|
+
# archive :user_pictures do |archive|
|
108
|
+
# archive.add '~/pictures'
|
109
|
+
# end
|
110
|
+
#
|
111
|
+
# notify_by Mail do |mail|
|
112
|
+
# mail.to = 'admin@email.com'
|
113
|
+
# end
|
114
|
+
# end
|
115
|
+
#
|
116
|
+
# MyModel.new(:john_smith, 'John Smith Backup') do
|
117
|
+
# archive :user_music do |archive|
|
118
|
+
# archive.add '~/music'
|
119
|
+
# end
|
120
|
+
#
|
121
|
+
# notify_by Mail do |mail|
|
122
|
+
# mail.to = 'john.smith@email.com'
|
123
|
+
# end
|
124
|
+
# end
|