o2webappizer 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -0
  3. data/lib/o2webappizer/app_builder.rb +45 -13
  4. data/lib/o2webappizer/generators/app_generator.rb +1 -0
  5. data/lib/o2webappizer/version.rb +1 -1
  6. data/o2webappizer.gemspec +1 -1
  7. data/templates/.gitignore.tt +1 -0
  8. data/templates/Capfile +19 -0
  9. data/templates/Gemfile.tt +7 -4
  10. data/templates/Vagrantfile.tt +74 -0
  11. data/templates/app/assets/javascripts/application.js.coffee +1 -1
  12. data/templates/app/views/spree/shared/_head.html.erb +2 -2
  13. data/templates/config/Backup/config.rb +124 -0
  14. data/templates/config/Backup/models/db_backup.rb.tt +91 -0
  15. data/templates/config/deploy.rb.tt +92 -0
  16. data/templates/config/deploy/production.rb +66 -0
  17. data/templates/config/deploy/staging.rb +66 -0
  18. data/templates/config/deploy/vagrant.rb +66 -0
  19. data/templates/config/initializers_tt/mail_interceptor.rb +21 -0
  20. data/templates/config/nginx.app.conf.erb +82 -0
  21. data/templates/config/nginx.conf.erb +102 -0
  22. data/templates/config/routes.rb.tt +3 -0
  23. data/templates/config/secrets.yml.tt +10 -0
  24. data/templates/config/sunzi/files/authorized_keys +1 -0
  25. data/templates/config/sunzi/files/sudoers +1 -0
  26. data/templates/config/sunzi/install.sh +14 -0
  27. data/templates/config/sunzi/recipes/libraries.sh +24 -0
  28. data/templates/config/sunzi/recipes/mysql.sh +19 -0
  29. data/templates/config/sunzi/recipes/nodejs.sh +6 -0
  30. data/templates/config/sunzi/recipes/passenger.sh +19 -0
  31. data/templates/config/sunzi/recipes/postgres.sh +14 -0
  32. data/templates/config/sunzi/recipes/ruby.sh +28 -0
  33. data/templates/config/sunzi/recipes/setup.sh +11 -0
  34. data/templates/config/sunzi/recipes/sunzi.sh +99 -0
  35. data/templates/config/sunzi/recipes/sysstat.sh +8 -0
  36. data/templates/config/sunzi/recipes/update.sh +2 -0
  37. data/templates/config/sunzi/recipes/user.sh +23 -0
  38. data/templates/config/sunzi/roles/admin.sh +20 -0
  39. data/templates/config/sunzi/roles/deployer.sh +7 -0
  40. data/templates/config/sunzi/roles/updater.sh +5 -0
  41. data/templates/config/sunzi/sunzi.yml.tt +26 -0
  42. data/templates/db/migrate/20160114191411_add_mail_interceptors_to_settings.rb +12 -0
  43. data/templates/lib/middleware/turbo_dev.rb +40 -0
  44. data/templates/lib/tasks/app.rake +3 -0
  45. data/templates/lib/tasks/db.rake +9 -0
  46. data/templates/schedule.rb +47 -0
  47. data/templates/vendor/assets/javascripts/modernizr.custom.js +3 -0
  48. metadata +37 -10
  49. data/templates/vendor/assets/javascripts/modernizr.js +0 -3
@@ -0,0 +1,7 @@
1
+ sunzi.setup_progress
2
+
3
+ start=$(sunzi.start_time)
4
+
5
+ source recipes/ruby.sh
6
+
7
+ sunzi.elapsed_time $start
@@ -0,0 +1,5 @@
1
+ start=$(sunzi.start_time)
2
+
3
+ source recipes/update.sh
4
+
5
+ sunzi.elapsed_time $start
@@ -0,0 +1,26 @@
1
+ ---
2
+ # Dynamic variables here will be compiled to individual files in compiled/attributes.
3
+ attributes:
4
+ timezone: America/New_York
5
+ locales: en_US en_US.UTF-8
6
+ mysql_root_password: <%= SecureRandom.hex %>
7
+
8
+ # Remote recipes here will be downloaded to compiled/recipes.
9
+ recipes:
10
+ # rvm: https://raw.githubusercontent.com/kenn/sunzi-recipes/master/ruby/rvm.sh
11
+ # dotdeb: https://raw.githubusercontent.com/kenn/sunzi-recipes/master/debian/dotdeb-wheezy.sh
12
+ # backports: https://raw.githubusercontent.com/kenn/sunzi-recipes/master/debian/backports-wheezy.sh
13
+ # mongodb-10gen: https://raw.githubusercontent.com/kenn/sunzi-recipes/master/debian/mongodb-10gen.sh
14
+
15
+ # Files specified here will be copied to compiled/files.
16
+ # files:
17
+ # - ~/.ssh/id_rsa.pub
18
+
19
+ # Fine tune how Sunzi should work.
20
+ preferences:
21
+ # Erase the generated folder on the server after deploy.
22
+ erase_remote_folder: false
23
+
24
+ # Skip retrieving remote recipes when local copies already exist. This setting helps
25
+ # iterative deploy testing considerably faster, when you have a lot of remote recipes.
26
+ cache_remote_recipes: false
@@ -0,0 +1,12 @@
1
+ class AddMailInterceptorsToSettings < ActiveRecord::Migration
2
+ def up
3
+ Setting.apply_all(
4
+ mail_interceptors: ['rails@admin.cms', 'used in staging only'],
5
+ )
6
+ end
7
+ def down
8
+ Setting.remove_all(
9
+ :mail_interceptors,
10
+ )
11
+ end
12
+ end
@@ -0,0 +1,40 @@
1
+ # https://github.com/discourse/discourse/blob/master/lib/middleware/turbo_dev.rb
2
+ module Middleware
3
+
4
+ # Cheat and bypass Rails in development mode if the client attempts to download a static asset
5
+ # that's already been downloaded.
6
+ #
7
+ # Also ensures that assets are not cached in development mode. Around Chrome 29, the behavior
8
+ # of `must-revalidate` changed and would often not request assets that had changed.
9
+ #
10
+ # To use, include in your project and add the following to development.rb:
11
+ #
12
+ # require 'middleware/turbo_dev'
13
+ # config.middleware.insert 0, Middleware::TurboDev
14
+ #
15
+ class TurboDev
16
+ def initialize(app, settings={})
17
+ @app = app
18
+ end
19
+
20
+ def call(env)
21
+ root = "/assets/"
22
+ is_asset = env['REQUEST_PATH'] && env['REQUEST_PATH'].starts_with?(root)
23
+
24
+ # hack to bypass all middleware if serving assets, a lot faster 4.5 seconds -> 1.5 seconds
25
+ if (etag = env['HTTP_IF_NONE_MATCH']) && is_asset
26
+ name = env['REQUEST_PATH'][(root.length)..-1]
27
+ etag = etag.gsub "\"", ""
28
+ asset = Rails.application.assets.find_asset(name)
29
+ if asset && asset.digest == etag
30
+ return [304,{},[]]
31
+ end
32
+ end
33
+
34
+ status, headers, response = @app.call(env)
35
+ headers['Cache-Control'] = 'no-cache' if is_asset
36
+ [status, headers, response]
37
+ end
38
+ end
39
+
40
+ end
@@ -0,0 +1,3 @@
1
+ namespace :app do
2
+
3
+ end
@@ -0,0 +1,9 @@
1
+ namespace :db do
2
+ desc "Reset everything for local development"
3
+ task :reborn do
4
+ Rake::Task["db:drop"].invoke
5
+ Rake::Task["db:create"].invoke
6
+ Rake::Task["db:migrate"].invoke
7
+ Rake::Task["db:data:load"].invoke
8
+ end
9
+ end
@@ -0,0 +1,47 @@
1
+ # Use this file to easily define all of your cron jobs.
2
+ #
3
+ # It's helpful, but not entirely necessary to understand cron before proceeding.
4
+ # http://en.wikipedia.org/wiki/Cron
5
+
6
+ # Example:
7
+ #
8
+ # set :output, "/path/to/my/cron_log.log"
9
+ #
10
+ # every 2.hours do
11
+ # command "/usr/bin/some_great_command"
12
+ # runner "MyModel.some_method"
13
+ # rake "some:great:rake:task"
14
+ # end
15
+ #
16
+ # every 4.days do
17
+ # runner "AnotherModel.prune_old_records"
18
+ # end
19
+
20
+ # Learn more: http://github.com/javan/whenever
21
+
22
+ set :output, "#{Whenever.path}/log/cron.log"
23
+ env :RAILS_ENV, @environment
24
+ env :RAILS_ROOT, Whenever.path
25
+ env :PATH, ENV['PATH']
26
+ backup = "~/.rbenv/shims/backup perform -t db_backup --config_file #{Whenever.path}/config/Backup/config.rb"
27
+
28
+ case @environment
29
+ when 'development'
30
+ # every 1.minute do
31
+ # rake 'stuff:to:do'
32
+ # end
33
+ when 'vagrant'
34
+ every 1.minute do
35
+ # command backup
36
+ end
37
+ when 'staging'
38
+ every 1.day, :at => "12:00am" do
39
+ command backup
40
+ end
41
+ when 'production'
42
+ every 1.day, :at => "12:00am" do
43
+ command backup
44
+ end
45
+ else
46
+ raise 'RAILS_ENV undefined'
47
+ end
@@ -0,0 +1,3 @@
1
+ /*! modernizr 3.0.0-alpha.3 (Custom Build) | MIT *
2
+ * http://v3.modernizr.com/download/#-boxshadow-checked-csscolumns-csstransforms-csstransforms3d-csstransitions-generatedcontent-placeholder-smil-svg-touchevents-domprefixes-prefixed-prefixes-printshiv-testallprops-testprop-teststyles !*/
3
+ !function(e,t,n){function r(e,t){return typeof e===t}function o(){var e,t,n,o,i,a,s;for(var l in y){if(e=[],t=y[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(o=r(t.fn,"function")?t.fn():t.fn,i=0;i<e.length;i++)a=e[i],s=a.split("."),1===s.length?Modernizr[s[0]]=o:(!Modernizr[s[0]]||Modernizr[s[0]]instanceof Boolean||(Modernizr[s[0]]=new Boolean(Modernizr[s[0]])),Modernizr[s[0]][s[1]]=o),g.push((o?"":"no-")+s.join("-"))}}function i(e){var t=E.className,n=Modernizr._config.classPrefix||"";if(Modernizr._config.enableJSClass){var r=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(r,"$1"+n+"js$2")}Modernizr._config.enableClasses&&(t+=" "+n+e.join(" "+n),E.className=t)}function a(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")}function s(){var e=t.body;return e||(e=T("body"),e.fake=!0),e}function l(e,t,n,r){var o,i,a,l,u="modernizr",c=T("div"),f=s();if(parseInt(n,10))for(;n--;)a=T("div"),a.id=r?r[n]:u+(n+1),c.appendChild(a);return o=["&#173;",'<style id="s',u,'">',e,"</style>"].join(""),c.id=u,(f.fake?f:c).innerHTML+=o,f.appendChild(c),f.fake&&(f.style.background="",f.style.overflow="hidden",l=E.style.overflow,E.style.overflow="hidden",E.appendChild(f)),i=t(c,e),f.fake?(f.parentNode.removeChild(f),E.style.overflow=l,E.offsetHeight):c.parentNode.removeChild(c),!!i}function u(e,t){return!!~(""+e).indexOf(t)}function c(e,t){return function(){return e.apply(t,arguments)}}function f(e,t,n){var o;for(var i in e)if(e[i]in t)return n===!1?e[i]:(o=t[e[i]],r(o,"function")?c(o,n||t):o);return!1}function d(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function p(t,r){var o=t.length;if("CSS"in e&&"supports"in e.CSS){for(;o--;)if(e.CSS.supports(d(t[o]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var i=[];o--;)i.push("("+d(t[o])+":"+r+")");return i=i.join(" or "),l("@supports ("+i+") { #modernizr { position: absolute; } }",function(e){return"absolute"==getComputedStyle(e,null).position})}return n}function m(e,t,o,i){function s(){c&&(delete P.style,delete P.modElem)}if(i=r(i,"undefined")?!1:i,!r(o,"undefined")){var l=p(e,o);if(!r(l,"undefined"))return l}var c,f,d,m,h;for(P.style||(c=!0,P.modElem=T("modernizr"),P.style=P.modElem.style),d=e.length,f=0;d>f;f++)if(m=e[f],h=P.style[m],u(m,"-")&&(m=a(m)),P.style[m]!==n){if(i||r(o,"undefined"))return s(),"pfx"==t?m:!0;try{P.style[m]=o}catch(v){}if(P.style[m]!=h)return s(),"pfx"==t?m:!0}return s(),!1}function h(e,t,n,o,i){var a=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+N.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?m(s,t,o,i):(s=(e+" "+C.join(a+" ")+a).split(" "),f(s,t,n))}function v(e,t,r){return h(e,n,n,t,r)}var g=[];!function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=T.elements;return"string"==typeof e?e.split(" "):e}function o(e,t){var n=T.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),T.elements=n+" "+e,u(t)}function i(e){var t=C[e[E]];return t||(t={},x++,e[E]=x,C[x]=t),t}function a(e,n,r){if(n||(n=t),v)return n.createElement(e);r||(r=i(n));var o;return o=r.cache[e]?r.cache[e].cloneNode():b.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!o.canHaveChildren||S.test(e)||o.tagUrn?o:r.frag.appendChild(o)}function s(e,n){if(e||(e=t),v)return e.createDocumentFragment();n=n||i(e);for(var o=n.frag.cloneNode(),a=0,s=r(),l=s.length;l>a;a++)o.createElement(s[a]);return o}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return T.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(T,t.frag)}function u(e){e||(e=t);var r=i(e);return!T.shivCSS||h||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),v||l(e,r),e}function c(e){for(var t,n=e.getElementsByTagName("*"),o=n.length,i=RegExp("^(?:"+r().join("|")+")$","i"),a=[];o--;)t=n[o],i.test(t.nodeName)&&a.push(t.applyElement(f(t)));return a}function f(e){for(var t,n=e.attributes,r=n.length,o=e.ownerDocument.createElement(_+":"+e.nodeName);r--;)t=n[r],t.specified&&o.setAttribute(t.nodeName,t.nodeValue);return o.style.cssText=e.style.cssText,o}function d(e){for(var t,n=e.split("{"),o=n.length,i=RegExp("(^|[\\s,>+~])("+r().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),a="$1"+_+"\\:$2";o--;)t=n[o]=n[o].split("}"),t[t.length-1]=t[t.length-1].replace(i,a),n[o]=t.join("}");return n.join("{")}function p(e){for(var t=e.length;t--;)e[t].removeNode()}function m(e){function t(){clearTimeout(a._removeSheetTimer),r&&r.removeNode(!0),r=null}var r,o,a=i(e),s=e.namespaces,l=e.parentWindow;return!k||e.printShived?e:("undefined"==typeof s[_]&&s.add(_),l.attachEvent("onbeforeprint",function(){t();for(var i,a,s,l=e.styleSheets,u=[],f=l.length,p=Array(f);f--;)p[f]=l[f];for(;s=p.pop();)if(!s.disabled&&w.test(s.media)){try{i=s.imports,a=i.length}catch(m){a=0}for(f=0;a>f;f++)p.push(i[f]);try{u.push(s.cssText)}catch(m){}}u=d(u.reverse().join("")),o=c(e),r=n(e,u)}),l.attachEvent("onafterprint",function(){p(o),clearTimeout(a._removeSheetTimer),a._removeSheetTimer=setTimeout(t,500)}),e.printShived=!0,e)}var h,v,g="3.7.2",y=e.html5||{},S=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,b=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,E="_html5shiv",x=0,C={};!function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",h="hidden"in e,v=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){h=!0,v=!0}}();var T={elements:y.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:g,shivCSS:y.shivCSS!==!1,supportsUnknownElements:v,shivMethods:y.shivMethods!==!1,type:"default",shivDocument:u,createElement:a,createDocumentFragment:s,addElements:o};e.html5=T,u(t);var w=/^$|\b(?:all|print)\b/,_="html5shiv",k=!v&&function(){var n=t.documentElement;return!("undefined"==typeof t.namespaces||"undefined"==typeof t.parentWindow||"undefined"==typeof n.applyElement||"undefined"==typeof n.removeNode||"undefined"==typeof e.attachEvent)}();T.type+=" print",T.shivPrint=m,m(t)}(this,t);var y=[],S={_version:"3.0.0-alpha.3",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){y.push({name:e,fn:t,options:n})},addAsyncTest:function(e){y.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=S,Modernizr=new Modernizr,Modernizr.addTest("svg",!!t.createElementNS&&!!t.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect);var b=S._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):[];S._prefixes=b;var E=t.documentElement,x="Moz O ms Webkit",C=S._config.usePrefixes?x.toLowerCase().split(" "):[];S._domPrefixes=C;var T=function(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):t.createElement.apply(t,arguments)};Modernizr.addTest("placeholder","placeholder"in T("input")&&"placeholder"in T("textarea"));var w="CSS"in e&&"supports"in e.CSS,_="supportsCSS"in e;Modernizr.addTest("supports",w||_);var k={}.toString;Modernizr.addTest("smil",function(){return!!t.createElementNS&&/SVGAnimate/.test(k.call(t.createElementNS("http://www.w3.org/2000/svg","animate")))});var N=S._config.usePrefixes?x.split(" "):[];S._cssomPrefixes=N;var z=function(t){var r,o=b.length,i=e.CSSRule;if("undefined"==typeof i)return n;if(!t)return!1;if(t=t.replace(/^@/,""),r=t.replace(/-/g,"_").toUpperCase()+"_RULE",r in i)return"@"+t;for(var a=0;o>a;a++){var s=b[a],l=s.toUpperCase()+"_"+r;if(l in i)return"@-"+s.toLowerCase()+"-"+t}return!1},j=S.testStyles=l;Modernizr.addTest("checked",function(){return j("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=T("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),j('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}',function(e){Modernizr.addTest("generatedcontent",e.offsetHeight>=7)}),Modernizr.addTest("touchevents",function(){var n;if("ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch)n=!0;else{var r=["@media (",b.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");j(r,function(e){n=9===e.offsetTop})}return n});var A={elem:T("modernizr")};Modernizr._q.push(function(){delete A.elem});var P={style:A.elem.style};Modernizr._q.unshift(function(){delete P.style});S.testProp=function(e,t,r){return m([e],n,t,r)};S.testAllProps=h;S.prefixed=function(e,t,n){return 0===e.indexOf("@")?z(e):(-1!=e.indexOf("-")&&(e=a(e)),t?h(e,t,n):h(e,"pfx"))};S.testAllProps=v,Modernizr.addTest("boxshadow",v("boxShadow","1px 1px",!0)),Modernizr.addTest("csstransforms",function(){return-1===navigator.userAgent.indexOf("Android 2.")&&v("transform","scale(1)",!0)}),Modernizr.addTest("csstransforms3d",function(){var e=!!v("perspective","1px",!0),t=Modernizr._config.usePrefixes;if(e&&(!t||"webkitPerspective"in E.style)){var n;Modernizr.supports?n="@supports (perspective: 1px)":(n="@media (transform-3d)",t&&(n+=",(-webkit-transform-3d)")),n+="{#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}",j(n,function(t){e=9===t.offsetLeft&&5===t.offsetHeight})}return e}),Modernizr.addTest("csstransitions",v("transition","all",!0)),function(){Modernizr.addTest("csscolumns",function(){var e=!1,t=v("columnCount");try{(e=!!t)&&(e=new Boolean(e))}catch(n){}return e});for(var e,t,n=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"],r=0;r<n.length;r++)e=n[r].toLowerCase(),t=v("column"+n[r]),("breakbefore"===e||"breakafter"===e||"breakinside"==e)&&(t=t||v(n[r])),Modernizr.addTest("csscolumns."+e,t)}(),o(),i(g),delete S.addTest,delete S.addAsyncTest;for(var F=0;F<Modernizr._q.length;F++)Modernizr._q[F]();e.Modernizr=Modernizr}(window,document);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: o2webappizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrice Lebel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-12 00:00:00.000000000 Z
11
+ date: 2016-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -34,9 +34,6 @@ dependencies:
34
34
  name: bundler
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '1.10'
40
37
  - - "~>"
41
38
  - !ruby/object:Gem::Version
42
39
  version: '1.3'
@@ -44,9 +41,6 @@ dependencies:
44
41
  prerelease: false
45
42
  version_requirements: !ruby/object:Gem::Requirement
46
43
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '1.10'
50
44
  - - "~>"
51
45
  - !ruby/object:Gem::Version
52
46
  version: '1.3'
@@ -88,8 +82,10 @@ files:
88
82
  - o2webappizer.gemspec
89
83
  - templates/.gitignore.tt
90
84
  - templates/.ruby-version.tt
85
+ - templates/Capfile
91
86
  - templates/Gemfile.tt
92
87
  - templates/README.md.tt
88
+ - templates/Vagrantfile.tt
93
89
  - templates/app/assets/javascripts/app.js.coffee
94
90
  - templates/app/assets/javascripts/application.js.coffee
95
91
  - templates/app/assets/stylesheets/application.sass
@@ -111,10 +107,17 @@ files:
111
107
  - templates/app/views/spree/layouts/spree_application.html.erb
112
108
  - templates/app/views/spree/shared/_head.html.erb
113
109
  - templates/app/views/spree/shared/_main_nav_bar.html.erb
110
+ - templates/config/Backup/config.rb
111
+ - templates/config/Backup/models/db_backup.rb.tt
114
112
  - templates/config/database.yml.tt
113
+ - templates/config/deploy.rb.tt
114
+ - templates/config/deploy/production.rb
115
+ - templates/config/deploy/staging.rb
116
+ - templates/config/deploy/vagrant.rb
115
117
  - templates/config/initializers_tt/assets.rb.tt
116
118
  - templates/config/initializers_tt/devise.rb.tt
117
119
  - templates/config/initializers_tt/lazyload.rb
120
+ - templates/config/initializers_tt/mail_interceptor.rb
118
121
  - templates/config/initializers_tt/rails_admin.rb
119
122
  - templates/config/initializers_tt/rails_admin_cms.rb
120
123
  - templates/config/initializers_tt/rich.rb
@@ -124,9 +127,33 @@ files:
124
127
  - templates/config/locales/en.yml
125
128
  - templates/config/locales/routes.en.yml
126
129
  - templates/config/locales/simple_form.en.yml
130
+ - templates/config/nginx.app.conf.erb
131
+ - templates/config/nginx.conf.erb
127
132
  - templates/config/routes.rb.tt
128
133
  - templates/config/secrets.yml.tt
134
+ - templates/config/sunzi/files/authorized_keys
135
+ - templates/config/sunzi/files/sudoers
136
+ - templates/config/sunzi/install.sh
137
+ - templates/config/sunzi/recipes/libraries.sh
138
+ - templates/config/sunzi/recipes/mysql.sh
139
+ - templates/config/sunzi/recipes/nodejs.sh
140
+ - templates/config/sunzi/recipes/passenger.sh
141
+ - templates/config/sunzi/recipes/postgres.sh
142
+ - templates/config/sunzi/recipes/ruby.sh
143
+ - templates/config/sunzi/recipes/setup.sh
144
+ - templates/config/sunzi/recipes/sunzi.sh
145
+ - templates/config/sunzi/recipes/sysstat.sh
146
+ - templates/config/sunzi/recipes/update.sh
147
+ - templates/config/sunzi/recipes/user.sh
148
+ - templates/config/sunzi/roles/admin.sh
149
+ - templates/config/sunzi/roles/deployer.sh
150
+ - templates/config/sunzi/roles/updater.sh
151
+ - templates/config/sunzi/sunzi.yml.tt
152
+ - templates/db/migrate/20160114191411_add_mail_interceptors_to_settings.rb
129
153
  - templates/db/seeds.rb.tt
154
+ - templates/lib/middleware/turbo_dev.rb
155
+ - templates/lib/tasks/app.rake
156
+ - templates/lib/tasks/db.rake
130
157
  - templates/public/404.html
131
158
  - templates/public/422.html
132
159
  - templates/public/500.html
@@ -142,8 +169,9 @@ files:
142
169
  - templates/public/images/small/missing.png
143
170
  - templates/public/images/thumb/missing.png
144
171
  - templates/public/robots.txt.tt
172
+ - templates/schedule.rb
145
173
  - templates/vendor/assets/javascripts/jquery.lazyload.js
146
- - templates/vendor/assets/javascripts/modernizr.js
174
+ - templates/vendor/assets/javascripts/modernizr.custom.js
147
175
  - templates/vendor/assets/javascripts/rails_admin/custom/ui.js.coffee
148
176
  - templates/vendor/assets/javascripts/spree/backend/all.js
149
177
  - templates/vendor/assets/javascripts/spree/frontend/all.js
@@ -179,4 +207,3 @@ signing_key:
179
207
  specification_version: 4
180
208
  summary: Project Boilerplate Builder used by O2Web
181
209
  test_files: []
182
- has_rdoc:
@@ -1,3 +0,0 @@
1
- /*! modernizr 3.2.0 (Custom Build) | MIT *
2
- * http://modernizr.com/download/?-boxshadow-checked-csscolumns-csstransforms-csstransforms3d-csstransitions-generatedcontent-placeholder-smil-svg-touchevents-domprefixes-prefixed-prefixes-printshiv-testallprops-testprop-teststyles !*/
3
- !function(e,t,n){function r(e,t){return typeof e===t}function o(){var e,t,n,o,i,a,s;for(var u in g)if(g.hasOwnProperty(u)){if(e=[],t=g[u],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(o=r(t.fn,"function")?t.fn():t.fn,i=0;i<e.length;i++)a=e[i],s=a.split("."),1===s.length?Modernizr[s[0]]=o:(!Modernizr[s[0]]||Modernizr[s[0]]instanceof Boolean||(Modernizr[s[0]]=new Boolean(Modernizr[s[0]])),Modernizr[s[0]][s[1]]=o),x.push((o?"":"no-")+s.join("-"))}}function i(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")}function a(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):C?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function s(e,t){return!!~(""+e).indexOf(t)}function u(){var e=t.body;return e||(e=a(C?"svg":"body"),e.fake=!0),e}function l(e,n,r,o){var i,s,l,c,f="modernizr",d=a("div"),p=u();if(parseInt(r,10))for(;r--;)l=a("div"),l.id=o?o[r]:f+(r+1),d.appendChild(l);return i=a("style"),i.type="text/css",i.id="s"+f,(p.fake?p:d).appendChild(i),p.appendChild(d),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(t.createTextNode(e)),d.id=f,p.fake&&(p.style.background="",p.style.overflow="hidden",c=w.style.overflow,w.style.overflow="hidden",w.appendChild(p)),s=n(d,e),p.fake?(p.parentNode.removeChild(p),w.style.overflow=c,w.offsetHeight):d.parentNode.removeChild(d),!!s}function c(e,t){return function(){return e.apply(t,arguments)}}function f(e,t,n){var o;for(var i in e)if(e[i]in t)return n===!1?e[i]:(o=t[e[i]],r(o,"function")?c(o,n||t):o);return!1}function d(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function p(t,r){var o=t.length;if("CSS"in e&&"supports"in e.CSS){for(;o--;)if(e.CSS.supports(d(t[o]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var i=[];o--;)i.push("("+d(t[o])+":"+r+")");return i=i.join(" or "),l("@supports ("+i+") { #modernizr { position: absolute; } }",function(e){return"absolute"==getComputedStyle(e,null).position})}return n}function m(e,t,o,u){function l(){f&&(delete P.style,delete P.modElem)}if(u=r(u,"undefined")?!1:u,!r(o,"undefined")){var c=p(e,o);if(!r(c,"undefined"))return c}for(var f,d,m,h,v,g=["modernizr","tspan"];!P.style;)f=!0,P.modElem=a(g.shift()),P.style=P.modElem.style;for(m=e.length,d=0;m>d;d++)if(h=e[d],v=P.style[h],s(h,"-")&&(h=i(h)),P.style[h]!==n){if(u||r(o,"undefined"))return l(),"pfx"==t?h:!0;try{P.style[h]=o}catch(y){}if(P.style[h]!=v)return l(),"pfx"==t?h:!0}return l(),!1}function h(e,t,n,o,i){var a=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+N.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?m(s,t,o,i):(s=(e+" "+E.join(a+" ")+a).split(" "),f(s,t,n))}function v(e,t,r){return h(e,n,n,t,r)}var g=[],y={_version:"3.2.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){g.push({name:e,fn:t,options:n})},addAsyncTest:function(e){g.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=y,Modernizr=new Modernizr,Modernizr.addTest("svg",!!t.createElementNS&&!!t.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect);var S=y._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):[];y._prefixes=S;var x=[],b="Moz O ms Webkit",E=y._config.usePrefixes?b.toLowerCase().split(" "):[];y._domPrefixes=E;var w=t.documentElement,C="svg"===w.nodeName.toLowerCase();C||!function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=C.elements;return"string"==typeof e?e.split(" "):e}function o(e,t){var n=C.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),C.elements=n+" "+e,l(t)}function i(e){var t=w[e[b]];return t||(t={},E++,e[b]=E,w[E]=t),t}function a(e,n,r){if(n||(n=t),v)return n.createElement(e);r||(r=i(n));var o;return o=r.cache[e]?r.cache[e].cloneNode():x.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!o.canHaveChildren||S.test(e)||o.tagUrn?o:r.frag.appendChild(o)}function s(e,n){if(e||(e=t),v)return e.createDocumentFragment();n=n||i(e);for(var o=n.frag.cloneNode(),a=0,s=r(),u=s.length;u>a;a++)o.createElement(s[a]);return o}function u(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return C.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(C,t.frag)}function l(e){e||(e=t);var r=i(e);return!C.shivCSS||h||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),v||u(e,r),e}function c(e){for(var t,n=e.getElementsByTagName("*"),o=n.length,i=RegExp("^(?:"+r().join("|")+")$","i"),a=[];o--;)t=n[o],i.test(t.nodeName)&&a.push(t.applyElement(f(t)));return a}function f(e){for(var t,n=e.attributes,r=n.length,o=e.ownerDocument.createElement(k+":"+e.nodeName);r--;)t=n[r],t.specified&&o.setAttribute(t.nodeName,t.nodeValue);return o.style.cssText=e.style.cssText,o}function d(e){for(var t,n=e.split("{"),o=n.length,i=RegExp("(^|[\\s,>+~])("+r().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),a="$1"+k+"\\:$2";o--;)t=n[o]=n[o].split("}"),t[t.length-1]=t[t.length-1].replace(i,a),n[o]=t.join("}");return n.join("{")}function p(e){for(var t=e.length;t--;)e[t].removeNode()}function m(e){function t(){clearTimeout(a._removeSheetTimer),r&&r.removeNode(!0),r=null}var r,o,a=i(e),s=e.namespaces,u=e.parentWindow;return!_||e.printShived?e:("undefined"==typeof s[k]&&s.add(k),u.attachEvent("onbeforeprint",function(){t();for(var i,a,s,u=e.styleSheets,l=[],f=u.length,p=Array(f);f--;)p[f]=u[f];for(;s=p.pop();)if(!s.disabled&&T.test(s.media)){try{i=s.imports,a=i.length}catch(m){a=0}for(f=0;a>f;f++)p.push(i[f]);try{l.push(s.cssText)}catch(m){}}l=d(l.reverse().join("")),o=c(e),r=n(e,l)}),u.attachEvent("onafterprint",function(){p(o),clearTimeout(a._removeSheetTimer),a._removeSheetTimer=setTimeout(t,500)}),e.printShived=!0,e)}var h,v,g="3.7.3",y=e.html5||{},S=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,x=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,b="_html5shiv",E=0,w={};!function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",h="hidden"in e,v=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){h=!0,v=!0}}();var C={elements:y.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:g,shivCSS:y.shivCSS!==!1,supportsUnknownElements:v,shivMethods:y.shivMethods!==!1,type:"default",shivDocument:l,createElement:a,createDocumentFragment:s,addElements:o};e.html5=C,l(t);var T=/^$|\b(?:all|print)\b/,k="html5shiv",_=!v&&function(){var n=t.documentElement;return!("undefined"==typeof t.namespaces||"undefined"==typeof t.parentWindow||"undefined"==typeof n.applyElement||"undefined"==typeof n.removeNode||"undefined"==typeof e.attachEvent)}();C.type+=" print",C.shivPrint=m,m(t),"object"==typeof module&&module.exports&&(module.exports=C)}("undefined"!=typeof e?e:this,t),Modernizr.addTest("placeholder","placeholder"in a("input")&&"placeholder"in a("textarea"));var T="CSS"in e&&"supports"in e.CSS,k="supportsCSS"in e;Modernizr.addTest("supports",T||k);var _={}.toString;Modernizr.addTest("smil",function(){return!!t.createElementNS&&/SVGAnimate/.test(_.call(t.createElementNS("http://www.w3.org/2000/svg","animate")))});var N=y._config.usePrefixes?b.split(" "):[];y._cssomPrefixes=N;var z=function(t){var r,o=S.length,i=e.CSSRule;if("undefined"==typeof i)return n;if(!t)return!1;if(t=t.replace(/^@/,""),r=t.replace(/-/g,"_").toUpperCase()+"_RULE",r in i)return"@"+t;for(var a=0;o>a;a++){var s=S[a],u=s.toUpperCase()+"_"+r;if(u in i)return"@-"+s.toLowerCase()+"-"+t}return!1};y.atRule=z;var j=y.testStyles=l;Modernizr.addTest("touchevents",function(){var n;if("ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch)n=!0;else{var r=["@media (",S.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");j(r,function(e){n=9===e.offsetTop})}return n}),Modernizr.addTest("checked",function(){return j("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=a("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),j('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}',function(e){Modernizr.addTest("generatedcontent",e.offsetHeight>=7)});var A={elem:a("modernizr")};Modernizr._q.push(function(){delete A.elem});var P={style:A.elem.style};Modernizr._q.unshift(function(){delete P.style});y.testProp=function(e,t,r){return m([e],n,t,r)};y.testAllProps=h;y.prefixed=function(e,t,n){return 0===e.indexOf("@")?z(e):(-1!=e.indexOf("-")&&(e=i(e)),t?h(e,t,n):h(e,"pfx"))};y.testAllProps=v,Modernizr.addTest("boxshadow",v("boxShadow","1px 1px",!0)),function(){Modernizr.addTest("csscolumns",function(){var e=!1,t=v("columnCount");try{(e=!!t)&&(e=new Boolean(e))}catch(n){}return e});for(var e,t,n=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"],r=0;r<n.length;r++)e=n[r].toLowerCase(),t=v("column"+n[r]),("breakbefore"===e||"breakafter"===e||"breakinside"==e)&&(t=t||v(n[r])),Modernizr.addTest("csscolumns."+e,t)}(),Modernizr.addTest("csstransforms",function(){return-1===navigator.userAgent.indexOf("Android 2.")&&v("transform","scale(1)",!0)}),Modernizr.addTest("csstransforms3d",function(){var e=!!v("perspective","1px",!0),t=Modernizr._config.usePrefixes;if(e&&(!t||"webkitPerspective"in w.style)){var n,r="#modernizr{width:0;height:0}";Modernizr.supports?n="@supports (perspective: 1px)":(n="@media (transform-3d)",t&&(n+=",(-webkit-transform-3d)")),n+="{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}",j(r+n,function(t){e=7===t.offsetWidth&&18===t.offsetHeight})}return e}),Modernizr.addTest("csstransitions",v("transition","all",!0)),o(),delete y.addTest,delete y.addAsyncTest;for(var F=0;F<Modernizr._q.length;F++)Modernizr._q[F]();e.Modernizr=Modernizr}(window,document);