├── README.md ├── edd-cli ├── .bowerrc ├── .editorconfig ├── .ember-cli ├── .env.deploy.production.example ├── .gitignore ├── .jshintrc ├── .travis.yml ├── .watchmanconfig ├── README.md ├── app.js ├── app │ ├── adapters │ │ └── application.js │ ├── app.js │ ├── components │ │ ├── .gitkeep │ │ └── slides-nav.js │ ├── controllers │ │ ├── .gitkeep │ │ └── slides.js │ ├── helpers │ │ └── .gitkeep │ ├── index.html │ ├── models │ │ ├── .gitkeep │ │ └── slide.js │ ├── router.js │ ├── routes │ │ ├── .gitkeep │ │ ├── slides.js │ │ └── slides │ │ │ ├── index.js │ │ │ └── slide.js │ ├── services │ │ └── current-slide.js │ ├── styles │ │ ├── _base.sass │ │ ├── _header.sass │ │ ├── app.sass │ │ ├── components │ │ │ └── _slides-nav.sass │ │ ├── header │ │ │ ├── _logo.sass │ │ │ └── _main-nav.sass │ │ ├── settings │ │ │ ├── _animations.sass │ │ │ ├── _fonts.sass │ │ │ ├── _icons.scss │ │ │ ├── _shadows.sass │ │ │ └── _svgs.sass │ │ └── views │ │ │ ├── _loading.sass │ │ │ └── _slide.sass │ ├── templates │ │ ├── application.hbs │ │ ├── components │ │ │ ├── .gitkeep │ │ │ └── slides-nav.hbs │ │ ├── slides.hbs │ │ └── slides │ │ │ └── slide.hbs │ ├── transitions.js │ └── views │ │ └── .gitkeep ├── bower.json ├── config │ ├── deploy.js │ └── environment.js ├── ember-cli-build.js ├── package.json ├── public │ ├── assets │ │ ├── fonts │ │ │ └── fauxnamic-sites-icons │ │ │ │ └── 1 │ │ │ │ ├── fauxnamic-sites-icons.eot │ │ │ │ ├── fauxnamic-sites-icons.svg │ │ │ │ ├── fauxnamic-sites-icons.ttf │ │ │ │ └── fauxnamic-sites-icons.woff │ │ └── images │ │ │ └── jackie.jpg │ ├── crossdomain.xml │ └── robots.txt ├── server │ └── index.js ├── testem.json ├── tests │ ├── .jshintrc │ ├── helpers │ │ ├── resolver.js │ │ └── start-app.js │ ├── index.html │ ├── test-helper.js │ └── unit │ │ └── .gitkeep └── vendor │ └── .gitkeep └── edd-rails ├── .gitignore ├── Capfile ├── Gemfile ├── Gemfile.lock ├── README.rdoc ├── Rakefile ├── app ├── assets │ ├── images │ │ └── .keep │ ├── javascripts │ │ └── application.js │ └── stylesheets │ │ └── application.css ├── controllers │ ├── api │ │ └── slides_controller.rb │ ├── application_controller.rb │ ├── concerns │ │ └── .keep │ └── demo_controller.rb ├── helpers │ └── application_helper.rb ├── mailers │ └── .keep ├── models │ ├── .keep │ ├── concerns │ │ └── .keep │ └── slide.rb └── views │ └── layouts │ └── application.html.erb ├── bin ├── bundle ├── rails ├── rake ├── setup ├── spring └── unicorn ├── config.ru ├── config ├── application.rb ├── boot.rb ├── database.yml ├── deploy.rb ├── deploy │ ├── production.rb │ └── staging.rb ├── environment.rb ├── environments │ ├── development.rb │ ├── production.rb │ └── test.rb ├── initializers │ ├── assets.rb │ ├── backtrace_silencers.rb │ ├── cookies_serializer.rb │ ├── filter_parameter_logging.rb │ ├── inflections.rb │ ├── mime_types.rb │ ├── session_store.rb │ └── wrap_parameters.rb ├── locales │ └── en.yml ├── routes.rb ├── secrets.yml └── unicorn.rb ├── db └── seeds.rb ├── lib ├── assets │ └── .keep └── tasks │ └── .keep ├── log └── .keep ├── public ├── 404.html ├── 422.html ├── 500.html ├── favicon.ico ├── robots.txt └── slides │ ├── 01.md │ ├── 02.md │ ├── 03.md │ ├── 04.md │ ├── 05.md │ ├── 06.md │ ├── 07.md │ ├── 08.md │ ├── 09.md │ ├── 10.md │ ├── 11.md │ ├── 12.md │ ├── 13.md │ ├── 14.md │ ├── 15.md │ ├── 16.md │ ├── 17.md │ ├── 18.md │ ├── 19.md │ ├── 20.md │ ├── 21.md │ ├── 22.md │ ├── 23.md │ ├── 24.md │ ├── 25.md │ ├── 26.md │ ├── 27.md │ ├── 28.md │ ├── 29.md │ ├── 30.md │ └── 31.md ├── test ├── controllers │ └── .keep ├── fixtures │ └── .keep ├── helpers │ └── .keep ├── integration │ └── .keep ├── mailers │ └── .keep ├── models │ └── .keep └── test_helper.rb └── vendor └── assets ├── javascripts └── .keep └── stylesheets └── .keep /README.md: -------------------------------------------------------------------------------- 1 | # NOTE: 2 | This repository is DEPRECATED 3 | 4 | the code is stil valid but the app is no longer hosted and Rails has been updated serveral times since when this was built 5 | 6 | that said you can still look at it and explore the implementation! 7 | 8 | # Ember Deploy Demo 9 | 10 | An example project for deploying Ember applications. 11 | 12 | ## Rationale 13 | 14 | There are a lot of good resources out there on how to deploy ember apps following the strategy suggested by [Luke Melia at EmberConf 2015](https://www.youtube.com/watch?v=4EDetv_Rw5U). 15 | 16 | The [ember-cli-deploy](https://github.com/ember-cli/ember-cli-deploy) addon takes you 99% of the way there and makes this deploy method super simple. 17 | 18 | This project puts together all the pieces and show an example workflow that allows you to use Redis/Cloudfront to serve your app in production but also to use Redis in development as well, avoiding the need to proxy from ember to your server side API. 19 | 20 | ## Live Demo/Slides 21 | 22 | 23 | The server app serves the `index.html` from `ember-cli` and exposes an API endpoint that returns the slides. 24 | 25 | ## Running the Project(s) 26 | 27 | Dependencies: 28 | 29 | * NPM 30 | * Bower 31 | * Redis 32 | 33 | Switch into the Rails project and install dependencies: 34 | 35 | $ cd edd-rails 36 | $ bundle install 37 | 38 | Start the server: 39 | 40 | $ bundle exec rails server 41 | 42 | Looking at http://localhost:3000, you should see "INDEX NOT FOUND" displayed. This is because we've yet to deploy an index to Redis in development. 43 | 44 | Switch into the Ember project and install dependencies: 45 | 46 | $ cd ../edd-cli 47 | $ npm install 48 | $ bower install 49 | 50 | Start the server: 51 | 52 | $ ember server 53 | 54 | After the initial build, you'll see a line line: 55 | 56 | - ✔ Activated revision `__development__` 57 | 58 | in the console. This means that the index has been pushed to Redis. Let's check Redis: 59 | 60 | $ redis-cli 61 | > KEYS edd-cli* 62 | 1) "edd-cli:current" 63 | 2) "edd-cli:revisions" 64 | 3) "edd-cli:__development__" 65 | 66 | Looks like Ember CLI Deploy pushed the indexes in. Go ahead and head back to the Rails app at http://localhost:3000 to see the `__development` index "running" inside the Rails app via Redis. 67 | 68 | ### Feedback 69 | 70 | Please let me know what you think! 71 | 72 | ### Thanks 73 | 74 | @lukemelia 75 | @levelbossmike 76 | @elucid 77 | and all the other contributors to ember-cli-deploy 78 | -------------------------------------------------------------------------------- /edd-cli/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components", 3 | "analytics": false 4 | } 5 | -------------------------------------------------------------------------------- /edd-cli/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.js] 17 | indent_style = space 18 | indent_size = 2 19 | 20 | [*.hbs] 21 | insert_final_newline = false 22 | indent_style = space 23 | indent_size = 2 24 | 25 | [*.css] 26 | indent_style = space 27 | indent_size = 2 28 | 29 | [*.html] 30 | indent_style = space 31 | indent_size = 2 32 | 33 | [*.{diff,md}] 34 | trim_trailing_whitespace = false 35 | -------------------------------------------------------------------------------- /edd-cli/.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false 9 | } 10 | -------------------------------------------------------------------------------- /edd-cli/.env.deploy.production.example: -------------------------------------------------------------------------------- 1 | SSH_USERNAME=XXX 2 | SSH_KEY_PATH=~/.ssh/id_rsa 3 | REDIS_HOST=XXX 4 | REDIS_PORT=50000 5 | AWS_ACCESS_KEY=XXX 6 | AWS_SECRET_KEY=XXX 7 | -------------------------------------------------------------------------------- /edd-cli/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | 7 | # dependencies 8 | /node_modules 9 | /bower_components 10 | 11 | # misc 12 | /.sass-cache 13 | /connect.lock 14 | /coverage/* 15 | /libpeerconnection.log 16 | npm-debug.log 17 | testem.log 18 | .env.deploy.production 19 | -------------------------------------------------------------------------------- /edd-cli/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "document", 4 | "window", 5 | "-Promise" 6 | ], 7 | "browser": true, 8 | "boss": true, 9 | "curly": true, 10 | "debug": false, 11 | "devel": true, 12 | "eqeqeq": true, 13 | "evil": true, 14 | "forin": false, 15 | "immed": false, 16 | "laxbreak": false, 17 | "newcap": true, 18 | "noarg": true, 19 | "noempty": false, 20 | "nonew": false, 21 | "nomen": false, 22 | "onevar": false, 23 | "plusplus": false, 24 | "regexp": false, 25 | "undef": true, 26 | "sub": true, 27 | "strict": false, 28 | "white": false, 29 | "eqnull": true, 30 | "esnext": true, 31 | "unused": true 32 | } 33 | -------------------------------------------------------------------------------- /edd-cli/.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: node_js 3 | node_js: 4 | - "0.12" 5 | 6 | sudo: false 7 | 8 | cache: 9 | directories: 10 | - node_modules 11 | 12 | before_install: 13 | - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH 14 | - "npm config set spin false" 15 | - "npm install -g npm@^2" 16 | 17 | install: 18 | - npm install -g bower 19 | - npm install 20 | - bower install 21 | 22 | script: 23 | - npm test 24 | -------------------------------------------------------------------------------- /edd-cli/.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp"] 3 | } 4 | -------------------------------------------------------------------------------- /edd-cli/README.md: -------------------------------------------------------------------------------- 1 | # Edd-cli 2 | 3 | This README outlines the details of collaborating on this Ember application. 4 | A short introduction of this app could easily go here. 5 | 6 | ## Prerequisites 7 | 8 | You will need the following things properly installed on your computer. 9 | 10 | * [Git](http://git-scm.com/) 11 | * [Node.js](http://nodejs.org/) (with NPM) 12 | * [Bower](http://bower.io/) 13 | * [Ember CLI](http://www.ember-cli.com/) 14 | * [PhantomJS](http://phantomjs.org/) 15 | 16 | ## Installation 17 | 18 | * `git clone ` this repository 19 | * change into the new directory 20 | * `npm install` 21 | * `bower install` 22 | 23 | ## Running / Development 24 | 25 | * `ember server` 26 | * Visit your app at [http://localhost:4200](http://localhost:4200). 27 | 28 | ### Code Generators 29 | 30 | Make use of the many generators for code, try `ember help generate` for more details 31 | 32 | ### Running Tests 33 | 34 | * `ember test` 35 | * `ember test --server` 36 | 37 | ### Building 38 | 39 | * `ember build` (development) 40 | * `ember build --environment production` (production) 41 | 42 | ### Deploying 43 | 44 | Specify what it takes to deploy your app. 45 | 46 | ## Further Reading / Useful Links 47 | 48 | * [ember.js](http://emberjs.com/) 49 | * [ember-cli](http://www.ember-cli.com/) 50 | * Development Browser Extensions 51 | * [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi) 52 | * [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/) 53 | 54 | -------------------------------------------------------------------------------- /edd-cli/app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import Resolver from 'ember/resolver'; 3 | import loadInitializers from 'ember/load-initializers'; 4 | import config from './config/environment'; 5 | 6 | Ember.MODEL_FACTORY_INJECTIONS = true; 7 | 8 | var App = Ember.Application.extend({ 9 | modulePrefix: config.modulePrefix, 10 | podModulePrefix: config.podModulePrefix, 11 | Resolver: Resolver 12 | }); 13 | 14 | loadInitializers(App, config.modulePrefix); 15 | 16 | export default App; 17 | -------------------------------------------------------------------------------- /edd-cli/app/adapters/application.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | export default DS.JSONAPIAdapter.extend({ 4 | namespace: 'api', 5 | shouldReloadAll() { return true; }, 6 | shouldBackgroundReloadRecord() { return false; } 7 | }); 8 | -------------------------------------------------------------------------------- /edd-cli/app/app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import Resolver from 'ember/resolver'; 3 | import loadInitializers from 'ember/load-initializers'; 4 | import config from './config/environment'; 5 | 6 | var App; 7 | 8 | Ember.MODEL_FACTORY_INJECTIONS = true; 9 | 10 | App = Ember.Application.extend({ 11 | modulePrefix: config.modulePrefix, 12 | podModulePrefix: config.podModulePrefix, 13 | Resolver: Resolver 14 | }); 15 | 16 | loadInitializers(App, config.modulePrefix); 17 | 18 | export default App; 19 | -------------------------------------------------------------------------------- /edd-cli/app/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/app/components/.gitkeep -------------------------------------------------------------------------------- /edd-cli/app/components/slides-nav.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Component.extend({ 4 | tagName: 'nav', 5 | elementId: 'slides-nav', 6 | visitedSlides: Ember.computed.filterBy('slidesProxy', 'visited', true), 7 | showProgressBar: false, 8 | showSlideNumber: false, 9 | 10 | slidesProxy: function() { 11 | var currentSlideIndex = this.get('currentSlideIndex'), 12 | slides = this.get('slides'), 13 | markerWidth = 100 / (slides.length - 1); 14 | 15 | return slides.map(function(slide, index){ 16 | slide = {id: slide}; 17 | slide['visited'] = (index <= currentSlideIndex) ? true : false; 18 | slide['markerStyle'] = (index > 0) ? "width: %@%".fmt(markerWidth) : "width: 0px"; 19 | return slide; 20 | }); 21 | }.property('slides', 'currentSlideIndex'), 22 | 23 | currentSlideIndex: function() { 24 | return this.get('slides').indexOf(this.get('currentSlide')); 25 | }.property('slides', 'currentSlide.id'), 26 | 27 | currentSlideHumanizedIndex: function() { 28 | return this.get('currentSlideIndex') + 1; 29 | }.property('currentSlideIndex'), 30 | 31 | nextSlideId: function() { 32 | return this.get('slides').objectAt(this.get('currentSlideIndex') + 1); 33 | }.property('slides', 'currentSlideIndex'), 34 | 35 | prevSlideId: function() { 36 | return this.get('slides').objectAt(this.get('currentSlideIndex') - 1); 37 | }.property('slides', 'currentSlideIndex'), 38 | 39 | progress: function() { 40 | return (this.get('visitedSlides.length') / this.get('slides.length')) * 100; 41 | }.property('slides.length', 'visitedSlides.length'), 42 | 43 | didInsertElement: function() { 44 | var component = this; 45 | 46 | Ember.$(document).on('keyup.slides-nav', function(event) { 47 | var slides = component.get('slides'); 48 | 49 | switch (event.which) { 50 | case 48: // 0 51 | component.sendAction('goToSlide', slides.objectAt(9)); 52 | break; 53 | case 49: // 1 54 | component.sendAction('goToSlide', slides.objectAt(0)); 55 | break; 56 | case 50: // 2 57 | component.sendAction('goToSlide', slides.objectAt(1)); 58 | break; 59 | case 51: // 3 60 | component.sendAction('goToSlide', slides.objectAt(2)); 61 | break; 62 | case 52: // 4 63 | component.sendAction('goToSlide', slides.objectAt(3)); 64 | break; 65 | case 53: // 5 66 | component.sendAction('goToSlide', slides.objectAt(4)); 67 | break; 68 | case 54: // 6 69 | component.sendAction('goToSlide', slides.objectAt(5)); 70 | break; 71 | case 55: // 7 72 | component.sendAction('goToSlide', slides.objectAt(6)); 73 | break; 74 | case 56: // 8 75 | component.sendAction('goToSlide', slides.objectAt(7)); 76 | break; 77 | case 57: // 9 78 | component.sendAction('goToSlide', slides.objectAt(8)); 79 | break; 80 | case 37: // left arrow 81 | case 38: // up arrow 82 | case 72: // h 83 | case 75: // k 84 | case 188: // comma/less-than 85 | component.sendAction('goToSlide', component.get('prevSlideId')); 86 | break; 87 | case 32: // spacebar 88 | case 39: // right arrow 89 | case 40: // down arrow 90 | case 74: // j 91 | case 76: // l 92 | case 190: // dot/more-than 93 | component.sendAction('goToSlide', component.get('nextSlideId')); 94 | break; 95 | case 78: // n 96 | component._toggleSlideNumber(); 97 | break; 98 | case 80: // p 99 | component._toggleProgressBar(); 100 | break; 101 | } 102 | }); 103 | }, 104 | 105 | willDestroyElement: function() { 106 | Ember.$(document).off('keyup.slides-nav'); 107 | }, 108 | 109 | _toggleSlideNumber: function() { 110 | this._toggleChild('#current-slide-number', 'showSlideNumber'); 111 | }, 112 | 113 | _toggleProgressBar: function() { 114 | this._toggleChild('ul', 'showProgressBar'); 115 | }, 116 | 117 | _toggleChild: function(childSelector, property) { 118 | if (this.get(property) === true) { 119 | this.$(childSelector).addClass('hidden'); 120 | Ember.run.later(this, function() { 121 | this.set(property, false); 122 | }, 250); 123 | } 124 | else { 125 | this.set(property, true); 126 | Ember.run.next(this, function() { 127 | this.$(childSelector).removeClass('hidden'); 128 | }); 129 | } 130 | } 131 | }); 132 | -------------------------------------------------------------------------------- /edd-cli/app/controllers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/app/controllers/.gitkeep -------------------------------------------------------------------------------- /edd-cli/app/controllers/slides.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Controller.extend({ 4 | currentSlide: Ember.inject.service() 5 | }); 6 | -------------------------------------------------------------------------------- /edd-cli/app/helpers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/app/helpers/.gitkeep -------------------------------------------------------------------------------- /edd-cli/app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EddCli 7 | 8 | 9 | 10 | {{content-for 'head'}} 11 | 12 | 13 | 14 | 15 | 16 | {{content-for 'head-footer'}} 17 | 18 | 19 | {{content-for 'body'}} 20 | 21 | 22 | 23 | 24 | {{content-for 'body-footer'}} 25 | 26 | 27 | -------------------------------------------------------------------------------- /edd-cli/app/models/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/app/models/.gitkeep -------------------------------------------------------------------------------- /edd-cli/app/models/slide.js: -------------------------------------------------------------------------------- 1 | import DS from 'ember-data'; 2 | 3 | export default DS.Model.extend({ 4 | body: DS.attr('string'), 5 | backgroundImage: DS.attr('string') 6 | }); 7 | -------------------------------------------------------------------------------- /edd-cli/app/router.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import config from './config/environment'; 3 | 4 | var Router = Ember.Router.extend({ 5 | location: config.locationType 6 | }); 7 | 8 | Router.map(function() { 9 | this.route('slides', {path: '/'}, function() { 10 | this.route('slide', {path: '/:slide_id'}); 11 | }); 12 | }); 13 | 14 | export default Router; 15 | -------------------------------------------------------------------------------- /edd-cli/app/routes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/app/routes/.gitkeep -------------------------------------------------------------------------------- /edd-cli/app/routes/slides.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | model: function() { 5 | return this.store.findAll('slide'); 6 | }, 7 | 8 | actions: { 9 | goToSlide: function(slide) { 10 | if (slide) { 11 | this.transitionTo('slides.slide', slide); 12 | } 13 | } 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /edd-cli/app/routes/slides/index.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | redirect: function() { 5 | this.replaceWith('slides.slide', this.modelFor('slides').get('firstObject')); 6 | } 7 | }); 8 | 9 | -------------------------------------------------------------------------------- /edd-cli/app/routes/slides/slide.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | 3 | export default Ember.Route.extend({ 4 | currentSlide: Ember.inject.service(), 5 | afterModel: function(model) { 6 | this.set('currentSlide.slide', model); 7 | } 8 | }); 9 | -------------------------------------------------------------------------------- /edd-cli/app/services/current-slide.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | export default Ember.Service.extend({ 3 | slide: null 4 | }); 5 | -------------------------------------------------------------------------------- /edd-cli/app/styles/_base.sass: -------------------------------------------------------------------------------- 1 | *:focus 2 | outline: none 3 | 4 | * 5 | +transition-timing-function($material-swift) 6 | 7 | html, 8 | body 9 | height: 100% 10 | 11 | body 12 | margin: 0 13 | padding: 0 14 | background: white 15 | color: material-color('blue-grey', '800') 16 | min-width: 800px 17 | 18 | abbr[title] 19 | border-bottom: 0 20 | 21 | a, 22 | button 23 | cursor: pointer 24 | text-decoration: none 25 | 26 | a 27 | color: material-color('blue') 28 | &:hover 29 | color: material-color('orange') 30 | 31 | body, 32 | input, 33 | button, 34 | select, 35 | textarea 36 | font: 400 16px/1.5 $roboto 37 | @media only print 38 | font-size: 12pt 39 | 40 | p, 41 | ul, 42 | ol, 43 | blockquote 44 | margin: 45 | top: 0 46 | bottom: 1.5em 47 | 48 | &:last-child 49 | margin-bottom: 0 50 | 51 | ul, 52 | ol 53 | padding: 0 0 0 1.25em 54 | 55 | h1, 56 | h2, 57 | h3, 58 | h4, 59 | h5, 60 | h6 61 | font: 62 | family: $montserrat 63 | weight: 900 64 | color: material-color('blue-grey', '900') 65 | +font-smoothing(antialiased) 66 | &:first-child 67 | margin-top: 0 68 | 69 | address 70 | font-style: normal 71 | 72 | %wrapper 73 | position: relative 74 | margin: 0 auto 75 | padding: 0 10px 76 | max-width: 1280px 77 | min-width: 800px 78 | +box-sizing(border-box) 79 | +clearfix 80 | @media only screen and (min-width: 769px) 81 | padding: 0 20px 82 | 83 | .wrapper 84 | @extend %wrapper 85 | 86 | %section-header 87 | font: 88 | size: 2em 89 | weight: 800 90 | line-height: 1 91 | color: material-color('blue-grey', '900') 92 | letter-spacing: -0.0333em 93 | padding-top: .9em 94 | margin: 0 0 .5em 95 | @media only screen and (min-width: 601px) 96 | padding-top: .75em 97 | font-size: 3em 98 | @media only screen and (min-width: 769px) 99 | padding-top: 1.25em 100 | font-size: 3.5em 101 | 102 | main 103 | position: relative 104 | z-index: 1 105 | 106 | 107 | .unspace-logo 108 | display: block 109 | position: relative 110 | &:before 111 | +logo('unspace') 112 | span 113 | display: none 114 | 115 | a.github:before 116 | display: inline-block 117 | margin: 0 0.25em 0 0 118 | vertical-align: baseline 119 | +icon('github') 120 | 121 | 122 | .tooltipster-default 123 | background: material-color('blue-grey', '1000') 124 | border-color: material-color('blue-grey', '1000') 125 | 126 | .tooltipster-content 127 | font: 128 | size: 14px 129 | weight: 400 130 | line-height: 1.5 131 | padding: 0.5em 1em 0.65em 132 | -------------------------------------------------------------------------------- /edd-cli/app/styles/_header.sass: -------------------------------------------------------------------------------- 1 | #main-header 2 | position: fixed 3 | top: 0 4 | left: 0 5 | right: 0 6 | max-width: none 7 | height: 3.6em 8 | padding: 9 | top: 1em 10 | bottom: 1em 11 | z-index: 999 12 | color: darken(material-color('red', '900'), 5%) 13 | +box-sizing(border-box) 14 | +transition-property(background-color color box-shadow) 15 | +transition-duration(250ms) 16 | @extend %wrapper 17 | &:hover 18 | background-color: white 19 | color: material-color('red', '600') 20 | +material-shadow(3px) 21 | 22 | h1, 23 | .unspace-logo 24 | display: block 25 | position: relative 26 | margin: 0 27 | font-size: 1.5em 28 | line-height: 1.125 29 | color: inherit 30 | 31 | h1 32 | top: -0.05em 33 | float: left 34 | white-space: nowrap 35 | text-overflow: ellipsis 36 | overflow: hidden 37 | letter-spacing: -0.05em 38 | +animation(slide-from-left 250ms $material-swift both) 39 | 40 | .unspace-logo 41 | top: .125em 42 | float: right 43 | +animation(slide-from-right 250ms $material-swift both) 44 | &:hover, 45 | &:active 46 | color: material-color('cyan') 47 | -------------------------------------------------------------------------------- /edd-cli/app/styles/app.sass: -------------------------------------------------------------------------------- 1 | // Vendor 2 | @import 'bower_components/bourbon/app/assets/stylesheets/bourbon' 3 | @import 'bower_components/sass-material-colors/sass/sass-material-colors' 4 | 5 | // Settings 6 | @import settings/fonts 7 | @import settings/icons 8 | @import settings/animations 9 | @import settings/shadows 10 | 11 | // Base Styles 12 | @import base 13 | 14 | // Global Partials 15 | @import header 16 | 17 | // Views 18 | @import views/loading 19 | @import views/slide 20 | 21 | // Components 22 | @import components/slides-nav 23 | -------------------------------------------------------------------------------- /edd-cli/app/styles/components/_slides-nav.sass: -------------------------------------------------------------------------------- 1 | #slides-nav 2 | position: fixed 3 | left: 0 4 | right: 0 5 | bottom: 0 6 | max-width: none 7 | z-index: 9999 8 | @extend %wrapper 9 | 10 | ul 11 | position: relative 12 | margin: 0 13 | padding: 1.5em 0 14 | list-style: none 15 | +clearfix 16 | +transition(transform 250ms) 17 | +transform(translate3d(0, 0, 0)) 18 | 19 | &.hidden 20 | +transform(translate3d(0, 100%, 0)) 21 | 22 | li 23 | position: relative 24 | float: left 25 | margin: 0 26 | padding: 0 27 | height: .25em 28 | 29 | &, 30 | a 31 | background-color: material-color('red', '900') 32 | +transition(background-color 250ms) 33 | 34 | a 35 | display: block 36 | position: absolute 37 | top: -0.4em 38 | right: -0.4em 39 | border-radius: 1em 40 | z-index: 999 41 | +size(1em) 42 | 43 | span 44 | display: none 45 | 46 | &:first-of-type a 47 | left: -0.25em 48 | right: auto 49 | 50 | &:last-of-type a 51 | right: -0.25em 52 | 53 | &.visited 54 | &, 55 | a 56 | background-color: darken(material-color('red', '900'), 10%) 57 | 58 | 59 | &:hover 60 | li 61 | &, 62 | a 63 | background-color: material-color('red', '300') 64 | 65 | &.visited 66 | &, 67 | a 68 | background-color: material-color('red', '100') 69 | 70 | a, 71 | &.visited a 72 | &:hover, 73 | &:active 74 | background-color: material-color('amber') 75 | +transition-duration(0ms) 76 | 77 | #current-slide-number 78 | position: fixed 79 | right: .5em 80 | bottom: .5em 81 | font: 82 | family: $montserrat 83 | size: 4em 84 | weight: 700 85 | line-height: 1 86 | color: darken(material-color('red', '900'), 5%) 87 | +transition(transform 250ms) 88 | +transform(scale3d(1, 1, 1)) 89 | 90 | &.hidden 91 | +transform(scale3d(0, 0, 1)) 92 | 93 | 94 | .slides-nav-control 95 | position: fixed 96 | display: block 97 | top: 0 98 | bottom: 0 99 | height: 1em 100 | margin: auto 101 | padding: .25em 102 | z-index: 999 103 | font-size: 3em 104 | line-height: 1 105 | color: material-color('red', '800') 106 | +transition(color 250ms) 107 | 108 | span 109 | display: none 110 | 111 | &:hover, 112 | &:active 113 | color: white 114 | 115 | &.prev-slide 116 | left: 0 117 | &:before 118 | +icon('chevron-left') 119 | 120 | &.next-slide 121 | right: 0 122 | &:before 123 | +icon('chevron-right') 124 | 125 | -------------------------------------------------------------------------------- /edd-cli/app/styles/header/_logo.sass: -------------------------------------------------------------------------------- 1 | #main-logo 2 | font-size: 1.25em 3 | margin: 0 4 | z-index: 9999 5 | +font-smoothing(antialiased) 6 | +transition(font-size 150ms) 7 | @media only screen and (min-width: 769px) 8 | left: 20px 9 | font-size: 1.5em 10 | @media only screen and (min-width: 961px) 11 | font-size: 1.75em 12 | 13 | a 14 | display: block 15 | padding: .5em 0 16 | margin: 0 17 | overflow: hidden 18 | color: material-color('blue-grey', '50') 19 | +size(4.125em 1.25em) 20 | +transition-property(color box-shadow background-color transform) 21 | +transition-duration(150ms) 22 | 23 | &:before 24 | display: block 25 | +logo('unspace') 26 | 27 | &:hover 28 | color: material-color('red') 29 | +transform(scale(1.025)) 30 | 31 | &:active 32 | color: material-color('red', '700') 33 | background-color: material-color('grey', '100') 34 | box-shadow: none 35 | +transform(scale(1)) 36 | +transition-duration(0ms) 37 | -------------------------------------------------------------------------------- /edd-cli/app/styles/header/_main-nav.sass: -------------------------------------------------------------------------------- 1 | #main-nav 2 | position: absolute 3 | top: 0 4 | right: 0 5 | line-height: 1 6 | z-index: 999 7 | @media only print 8 | display: none 9 | 10 | &:before 11 | display: none 12 | content: '' 13 | position: fixed 14 | top: 0 15 | left: 0 16 | right: 0 17 | bottom: 0 18 | background: rgba(black, .75) 19 | 20 | ul 21 | display: none 22 | position: fixed 23 | top: 0 24 | right: 0 25 | bottom: 0 26 | overflow: 27 | x: hidden 28 | y: scroll 29 | padding: 1em 0 0 30 | margin: 0 31 | font: 32 | family: $montserrat 33 | weight: 400 34 | background: material-color('red') 35 | list-style: none 36 | letter-spacing: -0.04em 37 | white-space: nowrap 38 | +material-shadow($opacity: .5) 39 | @media only screen and (min-width: 769px) 40 | font-size: 1.25em 41 | @media only screen and (min-width: 961px) 42 | font-size: 1.5em 43 | 44 | li 45 | display: block 46 | 47 | a 48 | display: block 49 | padding: .75em 3em .75em 1em 50 | color: material-color('red', '100') 51 | 52 | &:hover 53 | background: material-color('red', '100') 54 | color: material-color('red') 55 | 56 | &.active 57 | color: material-color('red') 58 | background: white 59 | -------------------------------------------------------------------------------- /edd-cli/app/styles/settings/_animations.sass: -------------------------------------------------------------------------------- 1 | // Timing Functions 2 | $material-swift: cubic-bezier( .4, 0, .2, 1 ) 3 | $material-swift-entrance: cubic-bezier( 0, 0, .2, 1 ) 4 | 5 | // Keyframes 6 | +keyframes(fade-in) 7 | from 8 | opacity: 0 9 | to 10 | opacity: 1 11 | 12 | +keyframes(slide-from-left) 13 | 0% 14 | +transform(translate3d(-100%, 0, 0)) 15 | 100% 16 | +transform(translate3d(0, 0, 0)) 17 | 18 | +keyframes(slide-from-right) 19 | 0% 20 | +transform(translate3d(100%, 0, 0)) 21 | 100% 22 | +transform(translate3d(0, 0, 0)) 23 | -------------------------------------------------------------------------------- /edd-cli/app/styles/settings/_fonts.sass: -------------------------------------------------------------------------------- 1 | =font-smoothing($value) 2 | @if $value == antialiased 3 | -webkit-font-smoothing: antialiased 4 | -moz-osx-font-smoothing: greyscale 5 | @else if $value == none 6 | -webkit-font-smoothing: none 7 | -moz-osx-font-smoothing: none 8 | @else 9 | -webkit-font-smoothing: subpixel-antialiased 10 | -moz-osx-font-smoothing: auto 11 | 12 | $helvetica: 'Helvetica Neue', Helvetica, Arial, sans-serif 13 | $roboto: 'Roboto', $helvetica 14 | $montserrat: 'Montserrat', $helvetica 15 | -------------------------------------------------------------------------------- /edd-cli/app/styles/settings/_icons.scss: -------------------------------------------------------------------------------- 1 | // Icons Font 2 | @include font-face("fauxnamic-sites-icons", "fonts/fauxnamic-sites-icons/1/fauxnamic-sites-icons", $file-formats: eot woff ttf svg); 3 | $fauxnamic-sites-icons: "fauxnamic-sites-icons"; 4 | 5 | // Logos 6 | $logos: ( 7 | 'unspace': '\e800' 8 | ); 9 | 10 | // Icons 11 | $icons: ( 12 | 'chevron-down': '\e801', 13 | 'chevron-left': '\e802', 14 | 'chevron-right': '\e803', 15 | 'chevron-up': '\e804', 16 | 'twitter': '\e805', 17 | 'github': '\e806', 18 | 'check': '\e807', 19 | 'cancel': '\e808', 20 | 'link': '\e809', 21 | 'code': '\e80a', 22 | 'mail': '\e80b', 23 | 'grid': '\e80c' 24 | ); 25 | 26 | // Base icon styles 27 | %icon { 28 | font-family: $fauxnamic-sites-icons; 29 | font-weight: normal; 30 | @include font-smoothing(antialiased) 31 | } 32 | 33 | // functions 34 | @function icon($icon-name) { 35 | @return map-get($icons, $icon-name); 36 | } 37 | 38 | @function logo($logo-name) { 39 | @return map-get($logos, $logo-name); 40 | } 41 | 42 | // mixins 43 | @mixin icon($icon-name: false) { 44 | @extend %icon; 45 | @if $icon-name { 46 | content: icon($icon-name); 47 | } 48 | } 49 | 50 | // mixins 51 | @mixin logo($logo-name: false) { 52 | @extend %icon; 53 | @if $logo-name { 54 | content: logo($logo-name); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /edd-cli/app/styles/settings/_shadows.sass: -------------------------------------------------------------------------------- 1 | =material-shadow($size: 15px, $opacity: .24, $inset: null) 2 | $shadow1: 0 ($size * 1) ($size * 3.333) 0 rgba(black, ($opacity * 0.791666)) 3 | $shadow2: 0 ($size * 0.333) $size 0 rgba(black, $opacity) 4 | box-shadow: $inset $shadow1, $inset $shadow2 5 | -------------------------------------------------------------------------------- /edd-cli/app/styles/settings/_svgs.sass: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/app/styles/settings/_svgs.sass -------------------------------------------------------------------------------- /edd-cli/app/styles/views/_loading.sass: -------------------------------------------------------------------------------- 1 | // Keyframes 2 | +keyframes(loading-ellipsis) 3 | from 4 | opacity: .5 5 | +transform(scale(1)) 6 | to 7 | opacity: 1 8 | +transform(scale(1.5)) 9 | 10 | .loading-ellipsis 11 | position: absolute 12 | top: 0 13 | left: 0 14 | right: 0 15 | bottom: 0 16 | height: 6em 17 | text-align: center 18 | margin: auto 19 | white-space: nowrap 20 | 21 | h1 22 | display: none 23 | 24 | span 25 | display: inline-block 26 | width: 1em 27 | height: 1em 28 | border-radius: 1em 29 | background: material-color('blue-grey', '100') 30 | margin: 0 .25em 31 | +animation(loading-ellipsis 600ms ease-in-out infinite alternate both) 32 | 33 | &:nth-of-type(2) 34 | +animation-delay(200ms) 35 | 36 | &:nth-of-type(3) 37 | +animation-delay(400ms) 38 | -------------------------------------------------------------------------------- /edd-cli/app/styles/views/_slide.sass: -------------------------------------------------------------------------------- 1 | .slides-container 2 | position: fixed 3 | top: 0 4 | left: 0 5 | right: 0 6 | bottom: 0 7 | z-index: 1 8 | min-width: 800px 9 | +linear-gradient(material-color('red'), material-color('red', '800')) 10 | 11 | > .liquid-child 12 | display: flex 13 | align-items: center 14 | position: absolute 15 | top: 3.666em 16 | left: 0 17 | right: 0 18 | bottom: 3.666em 19 | overflow: auto 20 | 21 | .slide 22 | padding: 2em 23 | font-size: 1.5em 24 | color: material-color('red', '100') 25 | text-align: center 26 | margin: 0 auto 27 | +box-sizing(border-box) 28 | 29 | h1, 30 | h2, 31 | h3, 32 | h4, 33 | h5, 34 | h6 35 | color: white 36 | 37 | .quiet 38 | font-weight: normal 39 | color: darken(material-color('red', '900'), 25%) 40 | 41 | h1, 42 | h2 43 | letter-spacing: -0.06em 44 | 45 | .quiet 46 | letter-spacing: -0.1em 47 | 48 | a 49 | display: inline-block 50 | position: relative 51 | color: white 52 | &:after 53 | content: '' 54 | display: block 55 | position: absolute 56 | left: 0 57 | right: 0 58 | bottom: 0.1em 59 | height: 2px 60 | background-color: material-color('red', '400') 61 | &:hover, 62 | &:active 63 | color: material-color('amber') 64 | 65 | &.unspace-logo:after 66 | display: none 67 | 68 | ul 69 | list-style-type: none 70 | 71 | ol 72 | text-align: left 73 | font-size: 2em 74 | 75 | pre 76 | text-align: left 77 | -------------------------------------------------------------------------------- /edd-cli/app/templates/application.hbs: -------------------------------------------------------------------------------- 1 |
2 |

Ember Deploy Demo

3 | 4 |
5 | 6 | {{outlet}} 7 | -------------------------------------------------------------------------------- /edd-cli/app/templates/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/app/templates/components/.gitkeep -------------------------------------------------------------------------------- /edd-cli/app/templates/components/slides-nav.hbs: -------------------------------------------------------------------------------- 1 | {{#if prevSlideId}} 2 | {{#link-to 'slides.slide' prevSlideId class='slides-nav-control prev-slide'}}Previous{{/link-to}} 3 | {{/if}} 4 | 5 | {{#if nextSlideId}} 6 | {{#link-to 'slides.slide' nextSlideId class='slides-nav-control next-slide'}}Next{{/link-to}} 7 | {{/if}} 8 | 9 | {{#if showSlideNumber}} 10 | 11 | {{/if}} 12 | 13 | {{#if showProgressBar}} 14 | 21 | {{/if}} 22 | -------------------------------------------------------------------------------- /edd-cli/app/templates/slides.hbs: -------------------------------------------------------------------------------- 1 | {{outlet}} 2 | {{slides-nav 3 | slides=model 4 | currentSlide=currentSlide.slide 5 | goToSlide="goToSlide"}} 6 | 7 | -------------------------------------------------------------------------------- /edd-cli/app/templates/slides/slide.hbs: -------------------------------------------------------------------------------- 1 | {{#liquid-bind model class='slides-container' enableGrowth=false as |slide|}} 2 |
3 | {{{slide.body}}} 4 |
5 | {{/liquid-bind}} 6 | -------------------------------------------------------------------------------- /edd-cli/app/transitions.js: -------------------------------------------------------------------------------- 1 | export default function() { 2 | this.transition( 3 | this.toValue(function(toValue, fromValue) { 4 | return toValue && fromValue && toValue.get('id') > fromValue.get('id'); 5 | }), 6 | this.use('toLeft'), 7 | this.reverse('toRight') 8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /edd-cli/app/views/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/app/views/.gitkeep -------------------------------------------------------------------------------- /edd-cli/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "edd-cli", 3 | "dependencies": { 4 | "bourbon": "~4.2.3", 5 | "sass-material-colors": "~0.0.5", 6 | "normalize": "~1.0.4", 7 | "ember": "1.13.11", 8 | "ember-cli-shims": "0.0.6", 9 | "ember-cli-test-loader": "0.2.1", 10 | "ember-data": "1.13.15", 11 | "ember-load-initializers": "0.1.7", 12 | "ember-qunit": "0.4.16", 13 | "ember-qunit-notifications": "0.1.0", 14 | "ember-resolver": "~0.1.20", 15 | "jquery": "^1.11.3", 16 | "loader.js": "ember-cli/loader.js#3.4.0", 17 | "qunit": "~1.20.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /edd-cli/config/deploy.js: -------------------------------------------------------------------------------- 1 | module.exports = function(deployTarget) { 2 | var ENV = {}; 3 | 4 | if (deployTarget === 'development-postbuild') { 5 | ENV.plugins = ['redis']; 6 | 7 | ENV.build = { 8 | environment: 'development' 9 | }; 10 | 11 | ENV.redis = { 12 | keyPrefix: 'edd-cli:index', 13 | revisionKey: '__development__', 14 | allowOverwrite: true, 15 | host: 'localhost', // this can be omitted because it is the default 16 | port: 6379, // this can be omitted because it is the default 17 | distDir: function(context) { 18 | return context.commandOptions.buildDir; 19 | } 20 | }; 21 | } 22 | 23 | if (deployTarget === 'staging') { 24 | ENV.build = { 25 | environment: 'staging', 26 | }; 27 | 28 | // configure other plugins for staging deploy target here 29 | ENV.redis = { 30 | keyPrefix: 'edd-cli:index', 31 | allowOverwrite: true, 32 | host: process.env['STAGING_HOST'], 33 | port: process.env['STAGING_PORT'], 34 | }; 35 | ENV.s3 = { 36 | accessKeyId: process.env['AWS_ACCESS_KEY'], 37 | secretAccessKey: process.env['AWS_SECRET_KEY'], 38 | region: 'us-east-1', 39 | bucket: 'edd-staging' 40 | }; 41 | } 42 | 43 | if (deployTarget === 'production') { 44 | ENV.build = { 45 | environment: 'production', 46 | }; 47 | // configure other plugins for production deploy target here 48 | // 49 | ENV['ssh-tunnel'] = { 50 | username: process.env['SSH_USERNAME'], 51 | host: process.env['REDIS_HOST'], 52 | srcPort: process.env['REDIS_PORT'] 53 | }; 54 | 55 | ENV.redis = { 56 | keyPrefix: 'edd-cli:index', 57 | allowOverwrite: true, 58 | host: 'localhost', 59 | port: process.env['REDIS_PORT'] 60 | }; 61 | ENV.s3 = { 62 | accessKeyId: process.env['AWS_ACCESS_KEY'], 63 | secretAccessKey: process.env['AWS_SECRET_KEY'], 64 | bucket: 'edd-production', 65 | region: 'us-east-1' 66 | } 67 | } 68 | 69 | // Note: if you need to build some configuration asynchronously,ou can return 70 | // a promise that resolves with the ENV object instead of returning the 71 | // ENV object synchronously. 72 | return ENV; 73 | 74 | }; 75 | -------------------------------------------------------------------------------- /edd-cli/config/environment.js: -------------------------------------------------------------------------------- 1 | /* jshint node: true */ 2 | 3 | module.exports = function(environment) { 4 | var ENV = { 5 | modulePrefix: 'edd-cli', 6 | environment: environment, 7 | baseURL: '/', 8 | locationType: 'auto', 9 | EmberENV: { 10 | FEATURES: { 11 | // Here you can enable experimental features on an ember canary build 12 | // e.g. 'with-controller': true 13 | } 14 | }, 15 | 16 | APP: { 17 | // Here you can pass flags/options to your application instance 18 | // when it is created 19 | } 20 | }; 21 | 22 | if (environment === 'development') { 23 | // ENV.APP.LOG_RESOLVER = true; 24 | // ENV.APP.LOG_ACTIVE_GENERATION = true; 25 | // ENV.APP.LOG_TRANSITIONS = true; 26 | // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; 27 | // ENV.APP.LOG_VIEW_LOOKUPS = true; 28 | } 29 | 30 | if (environment === 'test') { 31 | // Testem prefers this... 32 | ENV.baseURL = '/'; 33 | ENV.locationType = 'none'; 34 | 35 | // keep test console output quieter 36 | ENV.APP.LOG_ACTIVE_GENERATION = false; 37 | ENV.APP.LOG_VIEW_LOOKUPS = false; 38 | 39 | ENV.APP.rootElement = '#ember-testing'; 40 | } 41 | 42 | if (environment === 'production') { 43 | 44 | } 45 | 46 | return ENV; 47 | }; 48 | -------------------------------------------------------------------------------- /edd-cli/ember-cli-build.js: -------------------------------------------------------------------------------- 1 | /* global require, module */ 2 | var EmberApp = require('ember-cli/lib/broccoli/ember-app'); 3 | 4 | module.exports = function(defaults) { 5 | var env = EmberApp.env()|| 'development'; 6 | var isProductionLikeBuild = ['production', 'staging'].indexOf(env) > -1; 7 | 8 | var fingerprintOptions = { 9 | enabled: true, 10 | extensions: ['js', 'css', 'png', 'jpg', 'gif'] 11 | }; 12 | 13 | switch (env) { 14 | case 'development': 15 | fingerprintOptions.prepend = 'http://localhost:4200/'; 16 | break; 17 | case 'staging': 18 | fingerprintOptions.prepend = 'TODO'; 19 | break; 20 | case 'production': 21 | fingerprintOptions.prepend = 'https://d34ffs4dj251fe.cloudfront.net/'; 22 | break; 23 | } 24 | 25 | var app = new EmberApp(defaults, { 26 | fingerprint: fingerprintOptions, 27 | emberCLIDeploy: { 28 | runOnPostBuild: (env === 'development') ? 'development-postbuild' : false, 29 | shouldActivate: true 30 | }, 31 | sourcemaps: { 32 | enabled: !isProductionLikeBuild, 33 | }, 34 | minifyCSS: { enabled: isProductionLikeBuild }, 35 | minifyJS: { enabled: isProductionLikeBuild }, 36 | 37 | tests: process.env.EMBER_CLI_TEST_COMMAND || !isProductionLikeBuild, 38 | hinting: process.env.EMBER_CLI_TEST_COMMAND || !isProductionLikeBuild 39 | }); 40 | 41 | return app.toTree(); 42 | }; 43 | -------------------------------------------------------------------------------- /edd-cli/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "edd-cli", 3 | "version": "0.0.0", 4 | "description": "Small description for edd-cli goes here", 5 | "private": true, 6 | "directories": { 7 | "doc": "doc", 8 | "test": "tests" 9 | }, 10 | "scripts": { 11 | "build": "ember build", 12 | "start": "ember server", 13 | "test": "ember test" 14 | }, 15 | "repository": "", 16 | "engines": { 17 | "node": ">= 0.10.0" 18 | }, 19 | "author": "", 20 | "license": "MIT", 21 | "devDependencies": { 22 | "broccoli-asset-rev": "^2.0.6", 23 | "broccoli-sass": "^0.7.0", 24 | "dotenv": "^1.1.0", 25 | "ember-cli": "1.13.8", 26 | "ember-cli-app-version": "^1.0.0", 27 | "ember-cli-babel": "^5.1.5", 28 | "ember-cli-content-security-policy": "0.4.0", 29 | "ember-cli-dependency-checker": "^1.1.0", 30 | "ember-cli-deploy": "0.5.1", 31 | "ember-cli-deploy-build": "0.1.0", 32 | "ember-cli-deploy-display-revisions": "0.1.0", 33 | "ember-cli-deploy-gzip": "0.1.0", 34 | "ember-cli-deploy-manifest": "0.1.0", 35 | "ember-cli-deploy-redis": "0.1.1", 36 | "ember-cli-deploy-revision-data": "0.1.0", 37 | "ember-cli-deploy-s3": "0.2.0", 38 | "ember-cli-deploy-ssh-tunnel": "0.2.1", 39 | "ember-cli-htmlbars": "^1.0.1", 40 | "ember-cli-htmlbars-inline-precompile": "^0.3.1", 41 | "ember-cli-ic-ajax": "0.2.4", 42 | "ember-cli-inject-live-reload": "^1.3.1", 43 | "ember-cli-qunit": "^1.0.4", 44 | "ember-cli-release": "0.2.8", 45 | "ember-cli-sri": "^1.2.0", 46 | "ember-cli-uglify": "^1.2.0", 47 | "ember-data": "1.13.15", 48 | "ember-disable-proxy-controllers": "^1.0.1", 49 | "ember-export-application-global": "^1.0.4", 50 | "liquid-fire": "0.21.2" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /edd-cli/public/assets/fonts/fauxnamic-sites-icons/1/fauxnamic-sites-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/public/assets/fonts/fauxnamic-sites-icons/1/fauxnamic-sites-icons.eot -------------------------------------------------------------------------------- /edd-cli/public/assets/fonts/fauxnamic-sites-icons/1/fauxnamic-sites-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copyright (C) 2015 by original authors @ fontello.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /edd-cli/public/assets/fonts/fauxnamic-sites-icons/1/fauxnamic-sites-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/public/assets/fonts/fauxnamic-sites-icons/1/fauxnamic-sites-icons.ttf -------------------------------------------------------------------------------- /edd-cli/public/assets/fonts/fauxnamic-sites-icons/1/fauxnamic-sites-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/public/assets/fonts/fauxnamic-sites-icons/1/fauxnamic-sites-icons.woff -------------------------------------------------------------------------------- /edd-cli/public/assets/images/jackie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/public/assets/images/jackie.jpg -------------------------------------------------------------------------------- /edd-cli/public/crossdomain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /edd-cli/public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /edd-cli/server/index.js: -------------------------------------------------------------------------------- 1 | module.exports = function(app) { 2 | app.use(function(req, res, next) { 3 | res.setHeader('Access-Control-Allow-Origin', '*'); 4 | next(); 5 | }); 6 | }; 7 | -------------------------------------------------------------------------------- /edd-cli/testem.json: -------------------------------------------------------------------------------- 1 | { 2 | "framework": "qunit", 3 | "test_page": "tests/index.html?hidepassed", 4 | "disable_watching": true, 5 | "launch_in_ci": [ 6 | "PhantomJS" 7 | ], 8 | "launch_in_dev": [ 9 | "PhantomJS", 10 | "Chrome" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /edd-cli/tests/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "document", 4 | "window", 5 | "location", 6 | "setTimeout", 7 | "$", 8 | "-Promise", 9 | "define", 10 | "console", 11 | "visit", 12 | "exists", 13 | "fillIn", 14 | "click", 15 | "keyEvent", 16 | "triggerEvent", 17 | "find", 18 | "findWithAssert", 19 | "wait", 20 | "DS", 21 | "andThen", 22 | "currentURL", 23 | "currentPath", 24 | "currentRouteName" 25 | ], 26 | "node": false, 27 | "browser": false, 28 | "boss": true, 29 | "curly": true, 30 | "debug": false, 31 | "devel": false, 32 | "eqeqeq": true, 33 | "evil": true, 34 | "forin": false, 35 | "immed": false, 36 | "laxbreak": false, 37 | "newcap": true, 38 | "noarg": true, 39 | "noempty": false, 40 | "nonew": false, 41 | "nomen": false, 42 | "onevar": false, 43 | "plusplus": false, 44 | "regexp": false, 45 | "undef": true, 46 | "sub": true, 47 | "strict": false, 48 | "white": false, 49 | "eqnull": true, 50 | "esnext": true, 51 | "unused": true 52 | } 53 | -------------------------------------------------------------------------------- /edd-cli/tests/helpers/resolver.js: -------------------------------------------------------------------------------- 1 | import Resolver from 'ember/resolver'; 2 | import config from '../../config/environment'; 3 | 4 | var resolver = Resolver.create(); 5 | 6 | resolver.namespace = { 7 | modulePrefix: config.modulePrefix, 8 | podModulePrefix: config.podModulePrefix 9 | }; 10 | 11 | export default resolver; 12 | -------------------------------------------------------------------------------- /edd-cli/tests/helpers/start-app.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import Application from '../../app'; 3 | import config from '../../config/environment'; 4 | 5 | export default function startApp(attrs) { 6 | var application; 7 | 8 | var attributes = Ember.merge({}, config.APP); 9 | attributes = Ember.merge(attributes, attrs); // use defaults, but you can override; 10 | 11 | Ember.run(function() { 12 | application = Application.create(attributes); 13 | application.setupForTesting(); 14 | application.injectTestHelpers(); 15 | }); 16 | 17 | return application; 18 | } 19 | -------------------------------------------------------------------------------- /edd-cli/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EddCli Tests 7 | 8 | 9 | 10 | {{content-for 'head'}} 11 | {{content-for 'test-head'}} 12 | 13 | 14 | 15 | 16 | 17 | {{content-for 'head-footer'}} 18 | {{content-for 'test-head-footer'}} 19 | 20 | 21 | 22 | {{content-for 'body'}} 23 | {{content-for 'test-body'}} 24 | 25 | 26 | 27 | 28 | 29 | 30 | {{content-for 'body-footer'}} 31 | {{content-for 'test-body-footer'}} 32 | 33 | 34 | -------------------------------------------------------------------------------- /edd-cli/tests/test-helper.js: -------------------------------------------------------------------------------- 1 | import resolver from './helpers/resolver'; 2 | import { 3 | setResolver 4 | } from 'ember-qunit'; 5 | 6 | setResolver(resolver); 7 | -------------------------------------------------------------------------------- /edd-cli/tests/unit/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/tests/unit/.gitkeep -------------------------------------------------------------------------------- /edd-cli/vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-cli/vendor/.gitkeep -------------------------------------------------------------------------------- /edd-rails/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-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 | /.capistrano 10 | 11 | # Ignore the default SQLite database. 12 | /db/*.sqlite3 13 | /db/*.sqlite3-journal 14 | 15 | # Ignore all logfiles and tempfiles. 16 | /log/* 17 | !/log/.keep 18 | /tmp 19 | -------------------------------------------------------------------------------- /edd-rails/Capfile: -------------------------------------------------------------------------------- 1 | # Load DSL and set up stages 2 | require 'capistrano/setup' 3 | 4 | # Include default deployment tasks 5 | require 'capistrano/deploy' 6 | require 'capistrano/bundler' 7 | require 'capistrano/rails/migrations' 8 | require 'capistrano/rvm' 9 | require 'capistrano/git' 10 | 11 | # Include tasks from other gems included in your Gemfile 12 | # 13 | # For documentation on these, see for example: 14 | # 15 | # https://github.com/capistrano/rvm 16 | # https://github.com/capistrano/rbenv 17 | # https://github.com/capistrano/chruby 18 | # https://github.com/capistrano/bundler 19 | # https://github.com/capistrano/rails 20 | # https://github.com/capistrano/passenger 21 | # 22 | # require 'capistrano/rvm' 23 | # require 'capistrano/rbenv' 24 | # require 'capistrano/chruby' 25 | # require 'capistrano/bundler' 26 | # require 'capistrano/rails/assets' 27 | # require 'capistrano/rails/migrations' 28 | # require 'capistrano/passenger' 29 | 30 | # stolen from http://stackoverflow.com/questions/29168/deploying-a-git-subdirectory-in-capistrano 31 | # Define a new SCM strategy, so we can deploy only a subdirectory of our repo. 32 | module RemoteCacheWithProjectRootStrategy 33 | 34 | include ::Capistrano::Git::DefaultStrategy 35 | 36 | def release 37 | git :archive, fetch(:branch), fetch(:project_root), '| tar -x -C', release_path, "--strip=#{fetch(:project_root).count('/')+1}" 38 | end 39 | 40 | end 41 | 42 | # Load custom tasks from `lib/capistrano/tasks' if you have any defined 43 | Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } 44 | -------------------------------------------------------------------------------- /edd-rails/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | 4 | # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 5 | gem 'rails', '4.2.8' 6 | # Use sqlite3 as the database for Active Record 7 | gem 'sqlite3' 8 | gem 'sidekiq' 9 | # Use SCSS for stylesheets 10 | gem 'sass-rails', '~> 5.0' 11 | # Use Uglifier as compressor for JavaScript assets 12 | gem 'uglifier', '>= 1.3.0' 13 | # See https://github.com/rails/execjs#readme for more supported runtimes 14 | # gem 'therubyracer', platforms: :ruby 15 | 16 | # Use jquery as the JavaScript library 17 | gem 'jquery-rails' 18 | # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 19 | gem 'jbuilder', '~> 2.0' 20 | # bundle exec rake doc:rails generates the API under doc/api. 21 | gem 'sdoc', '~> 0.4.0', group: :doc 22 | 23 | gem 'redcarpet' 24 | 25 | # Use ActiveModel has_secure_password 26 | # gem 'bcrypt', '~> 3.1.7' 27 | 28 | # Use Unicorn as the app server 29 | # gem 'unicorn' 30 | 31 | # Use Capistrano for deployment 32 | # gem 'capistrano-rails', group: :development 33 | 34 | group :development do 35 | gem 'capistrano', '~> 3.1' 36 | gem 'capistrano-rails', '~> 1.1' 37 | gem 'capistrano-bundler' 38 | gem 'capistrano-rvm' 39 | end 40 | 41 | group :development, :test do 42 | # Call 'byebug' anywhere in the code to stop execution and get a debugger console 43 | gem 'byebug' 44 | 45 | # Access an IRB console on exception pages or by using <%= console %> in views 46 | gem 'web-console', '~> 2.0' 47 | 48 | # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 49 | gem 'spring' 50 | end 51 | 52 | gem 'unicorn', require: false 53 | -------------------------------------------------------------------------------- /edd-rails/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | actionmailer (4.2.8) 5 | actionpack (= 4.2.8) 6 | actionview (= 4.2.8) 7 | activejob (= 4.2.8) 8 | mail (~> 2.5, >= 2.5.4) 9 | rails-dom-testing (~> 1.0, >= 1.0.5) 10 | actionpack (4.2.8) 11 | actionview (= 4.2.8) 12 | activesupport (= 4.2.8) 13 | rack (~> 1.6) 14 | rack-test (~> 0.6.2) 15 | rails-dom-testing (~> 1.0, >= 1.0.5) 16 | rails-html-sanitizer (~> 1.0, >= 1.0.2) 17 | actionview (4.2.8) 18 | activesupport (= 4.2.8) 19 | builder (~> 3.1) 20 | erubis (~> 2.7.0) 21 | rails-dom-testing (~> 1.0, >= 1.0.5) 22 | rails-html-sanitizer (~> 1.0, >= 1.0.3) 23 | activejob (4.2.8) 24 | activesupport (= 4.2.8) 25 | globalid (>= 0.3.0) 26 | activemodel (4.2.8) 27 | activesupport (= 4.2.8) 28 | builder (~> 3.1) 29 | activerecord (4.2.8) 30 | activemodel (= 4.2.8) 31 | activesupport (= 4.2.8) 32 | arel (~> 6.0) 33 | activesupport (4.2.8) 34 | i18n (~> 0.7) 35 | minitest (~> 5.1) 36 | thread_safe (~> 0.3, >= 0.3.4) 37 | tzinfo (~> 1.1) 38 | arel (6.0.4) 39 | binding_of_caller (0.7.2) 40 | debug_inspector (>= 0.0.1) 41 | builder (3.2.3) 42 | byebug (5.0.0) 43 | columnize (= 0.9.0) 44 | capistrano (3.3.5) 45 | capistrano-stats (~> 1.1.0) 46 | i18n 47 | rake (>= 10.0.0) 48 | sshkit (~> 1.3) 49 | capistrano-bundler (1.1.4) 50 | capistrano (~> 3.1) 51 | sshkit (~> 1.2) 52 | capistrano-rails (1.1.2) 53 | capistrano (~> 3.1) 54 | capistrano-bundler (~> 1.1) 55 | capistrano-rvm (0.1.2) 56 | capistrano (~> 3.0) 57 | sshkit (~> 1.2) 58 | capistrano-stats (1.1.1) 59 | celluloid (0.16.0) 60 | timers (~> 4.0.0) 61 | colorize (0.7.5) 62 | columnize (0.9.0) 63 | concurrent-ruby (1.0.5) 64 | connection_pool (2.1.1) 65 | debug_inspector (0.0.2) 66 | erubis (2.7.0) 67 | execjs (2.5.2) 68 | globalid (0.4.0) 69 | activesupport (>= 4.2.0) 70 | hitimes (1.2.2) 71 | i18n (0.8.4) 72 | jbuilder (2.2.16) 73 | activesupport (>= 3.0.0, < 5) 74 | multi_json (~> 1.2) 75 | jquery-rails (4.0.3) 76 | rails-dom-testing (~> 1.0) 77 | railties (>= 4.2.0) 78 | thor (>= 0.14, < 2.0) 79 | json (1.8.6) 80 | kgio (2.9.2) 81 | loofah (2.0.3) 82 | nokogiri (>= 1.5.9) 83 | mail (2.6.6) 84 | mime-types (>= 1.16, < 4) 85 | mime-types (3.1) 86 | mime-types-data (~> 3.2015) 87 | mime-types-data (3.2016.0521) 88 | mini_portile2 (2.2.0) 89 | minitest (5.10.2) 90 | multi_json (1.11.0) 91 | net-scp (1.2.1) 92 | net-ssh (>= 2.6.5) 93 | net-ssh (2.9.2) 94 | nokogiri (1.8.0) 95 | mini_portile2 (~> 2.2.0) 96 | rack (1.6.8) 97 | rack-test (0.6.3) 98 | rack (>= 1.0) 99 | rails (4.2.8) 100 | actionmailer (= 4.2.8) 101 | actionpack (= 4.2.8) 102 | actionview (= 4.2.8) 103 | activejob (= 4.2.8) 104 | activemodel (= 4.2.8) 105 | activerecord (= 4.2.8) 106 | activesupport (= 4.2.8) 107 | bundler (>= 1.3.0, < 2.0) 108 | railties (= 4.2.8) 109 | sprockets-rails 110 | rails-deprecated_sanitizer (1.0.3) 111 | activesupport (>= 4.2.0.alpha) 112 | rails-dom-testing (1.0.8) 113 | activesupport (>= 4.2.0.beta, < 5.0) 114 | nokogiri (~> 1.6) 115 | rails-deprecated_sanitizer (>= 1.0.1) 116 | rails-html-sanitizer (1.0.3) 117 | loofah (~> 2.0) 118 | railties (4.2.8) 119 | actionpack (= 4.2.8) 120 | activesupport (= 4.2.8) 121 | rake (>= 0.8.7) 122 | thor (>= 0.18.1, < 2.0) 123 | raindrops (0.13.0) 124 | rake (12.0.0) 125 | rdoc (4.2.0) 126 | json (~> 1.4) 127 | redcarpet (3.2.2) 128 | redis (3.2.1) 129 | redis-namespace (1.5.1) 130 | redis (~> 3.0, >= 3.0.4) 131 | sass (3.4.14) 132 | sass-rails (5.0.3) 133 | railties (>= 4.0.0, < 5.0) 134 | sass (~> 3.1) 135 | sprockets (>= 2.8, < 4.0) 136 | sprockets-rails (>= 2.0, < 4.0) 137 | tilt (~> 1.1) 138 | sdoc (0.4.1) 139 | json (~> 1.7, >= 1.7.7) 140 | rdoc (~> 4.0) 141 | sidekiq (3.3.0) 142 | celluloid (>= 0.16.0) 143 | connection_pool (>= 2.0.0) 144 | json 145 | redis (>= 3.0.6) 146 | redis-namespace (>= 1.3.1) 147 | spring (1.3.6) 148 | sprockets (3.7.1) 149 | concurrent-ruby (~> 1.0) 150 | rack (> 1, < 3) 151 | sprockets-rails (3.2.0) 152 | actionpack (>= 4.0) 153 | activesupport (>= 4.0) 154 | sprockets (>= 3.0.0) 155 | sqlite3 (1.3.10) 156 | sshkit (1.6.1) 157 | colorize (>= 0.7.0) 158 | net-scp (>= 1.1.2) 159 | net-ssh (>= 2.8.0) 160 | thor (0.19.4) 161 | thread_safe (0.3.6) 162 | tilt (1.4.1) 163 | timers (4.0.1) 164 | hitimes 165 | tzinfo (1.2.3) 166 | thread_safe (~> 0.1) 167 | uglifier (2.7.1) 168 | execjs (>= 0.3.0) 169 | json (>= 1.8.0) 170 | unicorn (4.8.2) 171 | kgio (~> 2.6) 172 | rack 173 | raindrops (~> 0.7) 174 | web-console (2.1.2) 175 | activemodel (>= 4.0) 176 | binding_of_caller (>= 0.7.2) 177 | railties (>= 4.0) 178 | sprockets-rails (>= 2.0, < 4.0) 179 | 180 | PLATFORMS 181 | ruby 182 | 183 | DEPENDENCIES 184 | byebug 185 | capistrano (~> 3.1) 186 | capistrano-bundler 187 | capistrano-rails (~> 1.1) 188 | capistrano-rvm 189 | jbuilder (~> 2.0) 190 | jquery-rails 191 | rails (= 4.2.8) 192 | redcarpet 193 | sass-rails (~> 5.0) 194 | sdoc (~> 0.4.0) 195 | sidekiq 196 | spring 197 | sqlite3 198 | uglifier (>= 1.3.0) 199 | unicorn 200 | web-console (~> 2.0) 201 | -------------------------------------------------------------------------------- /edd-rails/README.rdoc: -------------------------------------------------------------------------------- 1 | == README 2 | 3 | This README would normally document whatever steps are necessary to get the 4 | application up and running. 5 | 6 | Things you may want to cover: 7 | 8 | * Ruby version 9 | 10 | * System dependencies 11 | 12 | * Configuration 13 | 14 | * Database creation 15 | 16 | * Database initialization 17 | 18 | * How to run the test suite 19 | 20 | * Services (job queues, cache servers, search engines, etc.) 21 | 22 | * Deployment instructions 23 | 24 | * ... 25 | 26 | 27 | Please feel free to use a different markup language if you do not plan to run 28 | rake doc:app. 29 | -------------------------------------------------------------------------------- /edd-rails/Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require File.expand_path('../config/application', __FILE__) 5 | 6 | Rails.application.load_tasks 7 | -------------------------------------------------------------------------------- /edd-rails/app/assets/images/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/app/assets/images/.keep -------------------------------------------------------------------------------- /edd-rails/app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file that'll be compiled into application.js, which will include all the files 2 | // listed below. 3 | // 4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 5 | // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. 6 | // 7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 8 | // compiled file. 9 | // 10 | // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 11 | // about supported directives. 12 | // 13 | //= require jquery 14 | //= require jquery_ujs 15 | //= require turbolinks 16 | //= require_tree . 17 | -------------------------------------------------------------------------------- /edd-rails/app/assets/stylesheets/application.css: -------------------------------------------------------------------------------- 1 | /* 2 | * This is a manifest file that'll be compiled into application.css, which will include all the files 3 | * listed below. 4 | * 5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, 6 | * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. 7 | * 8 | * You're free to add application-wide styles to this file and they'll appear at the bottom of the 9 | * compiled file so the styles you add here take precedence over styles defined in any styles 10 | * defined in the other CSS/SCSS files in this directory. It is generally better to create a new 11 | * file per style scope. 12 | * 13 | *= require_tree . 14 | *= require_self 15 | */ 16 | -------------------------------------------------------------------------------- /edd-rails/app/controllers/api/slides_controller.rb: -------------------------------------------------------------------------------- 1 | class Api::SlidesController < ActionController::Base 2 | 3 | def index 4 | render json: {data: Slide.all.map(&method(:serialize))} 5 | end 6 | 7 | private 8 | 9 | def serialize(slide) 10 | { 11 | type: "slides", 12 | id: slide.id, 13 | attributes: { 14 | body: slide.body 15 | } 16 | } 17 | end 18 | end 19 | 20 | -------------------------------------------------------------------------------- /edd-rails/app/controllers/application_controller.rb: -------------------------------------------------------------------------------- 1 | class ApplicationController < ActionController::Base 2 | # Prevent CSRF attacks by raising an exception. 3 | # For APIs, you may want to use :null_session instead. 4 | protect_from_forgery with: :exception 5 | end 6 | -------------------------------------------------------------------------------- /edd-rails/app/controllers/concerns/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/app/controllers/concerns/.keep -------------------------------------------------------------------------------- /edd-rails/app/controllers/demo_controller.rb: -------------------------------------------------------------------------------- 1 | class DemoController < ApplicationController 2 | SHORT_UUID_V4_REGEXP = /\A[0-9a-f]{7}\z/i 3 | 4 | def index 5 | index_key = if Rails.env.development? 6 | 'edd-cli:index:__development__' 7 | elsif fetch_revision 8 | "edd-cli:index:#{fetch_revision}" 9 | else 10 | Sidekiq.redis { |r| "edd-cli:index:#{r.get('edd-cli:index:current')}" } 11 | end 12 | index = Sidekiq.redis { |r| r.get(index_key) } 13 | render text: process_index(index), layout: false 14 | end 15 | 16 | private 17 | 18 | def fetch_revision 19 | rev = params[:revision] 20 | if rev =~ SHORT_UUID_V4_REGEXP 21 | rev 22 | end 23 | end 24 | 25 | def process_index(index) 26 | return "INDEX NOT FOUND" unless index 27 | 28 | index.sub!(/CSRF_TOKEN/, form_authenticity_token) 29 | index.sub!('/ember-cli-live-reload', 'http://localhost:4200/ember-cli-live-reload') if Rails.env.development? 30 | 31 | index 32 | end 33 | end 34 | 35 | -------------------------------------------------------------------------------- /edd-rails/app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | module ApplicationHelper 2 | end 3 | -------------------------------------------------------------------------------- /edd-rails/app/mailers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/app/mailers/.keep -------------------------------------------------------------------------------- /edd-rails/app/models/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/app/models/.keep -------------------------------------------------------------------------------- /edd-rails/app/models/concerns/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/app/models/concerns/.keep -------------------------------------------------------------------------------- /edd-rails/app/models/slide.rb: -------------------------------------------------------------------------------- 1 | class Slide 2 | attr_reader :id, :body 3 | 4 | def initialize(id: 1, body: '') 5 | @id = id 6 | @body = body 7 | end 8 | 9 | def self.all 10 | markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new) 11 | slides_path = [Rails.root, 'public/slides'].join('/') 12 | Dir.entries(slides_path).select do |e| 13 | e.match(/md\z/) 14 | end.map do |e| 15 | self.new( 16 | id: e, 17 | body: markdown.render(File.read("#{slides_path}/#{e}")) 18 | ) 19 | end.sort { |a,b| a.id <=> b.id } 20 | end 21 | 22 | end 23 | -------------------------------------------------------------------------------- /edd-rails/app/views/layouts/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EddRails 5 | <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 6 | <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 7 | <%= csrf_meta_tags %> 8 | 9 | 10 | 11 | <%= yield %> 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /edd-rails/bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /edd-rails/bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path("../spring", __FILE__) 4 | rescue LoadError 5 | end 6 | APP_PATH = File.expand_path('../../config/application', __FILE__) 7 | require_relative '../config/boot' 8 | require 'rails/commands' 9 | -------------------------------------------------------------------------------- /edd-rails/bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path("../spring", __FILE__) 4 | rescue LoadError 5 | end 6 | require_relative '../config/boot' 7 | require 'rake' 8 | Rake.application.run 9 | -------------------------------------------------------------------------------- /edd-rails/bin/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | 4 | # path to your application root. 5 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) 6 | 7 | Dir.chdir APP_ROOT do 8 | # This script is a starting point to setup your application. 9 | # Add necessary setup steps to this file: 10 | 11 | puts "== Installing dependencies ==" 12 | system "gem install bundler --conservative" 13 | system "bundle check || bundle install" 14 | 15 | # puts "\n== Copying sample files ==" 16 | # unless File.exist?("config/database.yml") 17 | # system "cp config/database.yml.sample config/database.yml" 18 | # end 19 | 20 | puts "\n== Preparing database ==" 21 | system "bin/rake db:setup" 22 | 23 | puts "\n== Removing old logs and tempfiles ==" 24 | system "rm -f log/*" 25 | system "rm -rf tmp/cache" 26 | 27 | puts "\n== Restarting application server ==" 28 | system "touch tmp/restart.txt" 29 | end 30 | -------------------------------------------------------------------------------- /edd-rails/bin/spring: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # This file loads spring without using Bundler, in order to be fast. 4 | # It gets overwritten when you run the `spring binstub` command. 5 | 6 | unless defined?(Spring) 7 | require "rubygems" 8 | require "bundler" 9 | 10 | if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m) 11 | Gem.paths = { "GEM_PATH" => [Bundler.bundle_path.to_s, *Gem.path].uniq } 12 | gem "spring", match[1] 13 | require "spring/binstub" 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /edd-rails/bin/unicorn: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source $HOME/.rvm/scripts/rvm 4 | 5 | rvm use default &> /dev/null 6 | 7 | exec bundle exec --keep-file-descriptors unicorn "$@" 8 | -------------------------------------------------------------------------------- /edd-rails/config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require ::File.expand_path('../config/environment', __FILE__) 4 | run Rails.application 5 | -------------------------------------------------------------------------------- /edd-rails/config/application.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path('../boot', __FILE__) 2 | 3 | require 'rails/all' 4 | 5 | # Require the gems listed in Gemfile, including any gems 6 | # you've limited to :test, :development, or :production. 7 | Bundler.require(*Rails.groups) 8 | 9 | module EddRails 10 | class Application < Rails::Application 11 | # Settings in config/environments/* take precedence over those specified here. 12 | # Application configuration should go into files in config/initializers 13 | # -- all .rb files in that directory are automatically loaded. 14 | 15 | # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. 16 | # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. 17 | # config.time_zone = 'Central Time (US & Canada)' 18 | 19 | # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. 20 | # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] 21 | # config.i18n.default_locale = :de 22 | 23 | # Do not swallow errors in after_commit/after_rollback callbacks. 24 | config.active_record.raise_in_transactional_callbacks = true 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /edd-rails/config/boot.rb: -------------------------------------------------------------------------------- 1 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 2 | 3 | require 'bundler/setup' # Set up gems listed in the Gemfile. 4 | -------------------------------------------------------------------------------- /edd-rails/config/database.yml: -------------------------------------------------------------------------------- 1 | # SQLite version 3.x 2 | # gem install sqlite3 3 | # 4 | # Ensure the SQLite 3 gem is defined in your Gemfile 5 | # gem 'sqlite3' 6 | # 7 | default: &default 8 | adapter: sqlite3 9 | pool: 5 10 | timeout: 5000 11 | 12 | development: 13 | <<: *default 14 | database: db/development.sqlite3 15 | 16 | # Warning: The database defined as "test" will be erased and 17 | # re-generated from your development database when you run "rake". 18 | # Do not set this db to the same as development or production. 19 | test: 20 | <<: *default 21 | database: db/test.sqlite3 22 | 23 | production: 24 | <<: *default 25 | database: db/production.sqlite3 26 | -------------------------------------------------------------------------------- /edd-rails/config/deploy.rb: -------------------------------------------------------------------------------- 1 | # config valid only for current version of Capistrano 2 | lock '3.3.5' 3 | 4 | set :application, 'edd-rails' 5 | set :repo_url, 'git@github.com:ghedamat/ember-deploy-demo' 6 | 7 | # Default branch is :master 8 | # ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }.call 9 | 10 | # Default deploy_to directory is /var/www/my_app_name 11 | set :deploy_to, '/sites/edd-rails' 12 | set :git_strategy, RemoteCacheWithProjectRootStrategy 13 | set :project_root, 'edd-rails' 14 | 15 | set :linked_files, %w{config/database.yml config/secrets.yml} 16 | set :linked_dirs, %w{log} 17 | 18 | 19 | # Default value for :scm is :git 20 | # set :scm, :git 21 | 22 | # Default value for :format is :pretty 23 | # set :format, :pretty 24 | 25 | # Default value for :log_level is :debug 26 | # set :log_level, :debug 27 | 28 | # Default value for :pty is false 29 | # set :pty, true 30 | 31 | # Default value for :linked_files is [] 32 | # set :linked_files, fetch(:linked_files, []).push('config/database.yml') 33 | 34 | # Default value for linked_dirs is [] 35 | # set :linked_dirs, fetch(:linked_dirs, []).push('bin', 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system') 36 | 37 | # Default value for default_env is {} 38 | # set :default_env, { path: "/opt/ruby/bin:$PATH" } 39 | 40 | # Default value for keep_releases is 5 41 | # set :keep_releases, 5 42 | 43 | namespace :deploy do 44 | task :restart do 45 | on roles(:app), in: :sequence, wait: 10 do 46 | execute "/etc/init.d/unicorn upgrade" 47 | end 48 | end 49 | 50 | after :publishing, :restart 51 | end 52 | -------------------------------------------------------------------------------- /edd-rails/config/deploy/production.rb: -------------------------------------------------------------------------------- 1 | # Simple Role Syntax 2 | # ================== 3 | # Supports bulk-adding hosts to roles, the primary server in each group 4 | # is considered to be the first unless any hosts have the primary 5 | # property set. Don't declare `role :all`, it's a meta role. 6 | 7 | # Extended Server Syntax 8 | # ====================== 9 | # This can be used to drop a more detailed server definition into the 10 | # server list. The second argument is a, or duck-types, Hash and is 11 | # used to set extended properties on the server. 12 | 13 | server 'ghedamat.com', user: 'tha', roles: %w{web app db} 14 | set :rails_env, 'production' 15 | 16 | 17 | # Custom SSH Options 18 | # ================== 19 | # You may pass any option but keep in mind that net/ssh understands a 20 | # limited set of options, consult[net/ssh documentation](http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start). 21 | # 22 | # Global options 23 | # -------------- 24 | # set :ssh_options, { 25 | # keys: %w(/home/rlisowski/.ssh/id_rsa), 26 | # forward_agent: false, 27 | # auth_methods: %w(password) 28 | # } 29 | # 30 | # And/or per server (overrides global) 31 | # ------------------------------------ 32 | # server 'example.com', 33 | # user: 'user_name', 34 | # roles: %w{web app}, 35 | # ssh_options: { 36 | # user: 'user_name', # overrides user setting above 37 | # keys: %w(/home/user_name/.ssh/id_rsa), 38 | # forward_agent: false, 39 | # auth_methods: %w(publickey password) 40 | # # password: 'please use keys' 41 | # } 42 | -------------------------------------------------------------------------------- /edd-rails/config/deploy/staging.rb: -------------------------------------------------------------------------------- 1 | # Simple Role Syntax 2 | # ================== 3 | # Supports bulk-adding hosts to roles, the primary server in each group 4 | # is considered to be the first unless any hosts have the primary 5 | # property set. Don't declare `role :all`, it's a meta role. 6 | 7 | role :app, %w{deploy@example.com} 8 | role :web, %w{deploy@example.com} 9 | role :db, %w{deploy@example.com} 10 | 11 | 12 | # Extended Server Syntax 13 | # ====================== 14 | # This can be used to drop a more detailed server definition into the 15 | # server list. The second argument is a, or duck-types, Hash and is 16 | # used to set extended properties on the server. 17 | 18 | server 'example.com', user: 'deploy', roles: %w{web app}, my_property: :my_value 19 | 20 | 21 | # Custom SSH Options 22 | # ================== 23 | # You may pass any option but keep in mind that net/ssh understands a 24 | # limited set of options, consult[net/ssh documentation](http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start). 25 | # 26 | # Global options 27 | # -------------- 28 | # set :ssh_options, { 29 | # keys: %w(/home/rlisowski/.ssh/id_rsa), 30 | # forward_agent: false, 31 | # auth_methods: %w(password) 32 | # } 33 | # 34 | # And/or per server (overrides global) 35 | # ------------------------------------ 36 | # server 'example.com', 37 | # user: 'user_name', 38 | # roles: %w{web app}, 39 | # ssh_options: { 40 | # user: 'user_name', # overrides user setting above 41 | # keys: %w(/home/user_name/.ssh/id_rsa), 42 | # forward_agent: false, 43 | # auth_methods: %w(publickey password) 44 | # # password: 'please use keys' 45 | # } 46 | -------------------------------------------------------------------------------- /edd-rails/config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require File.expand_path('../application', __FILE__) 3 | 4 | # Initialize the Rails application. 5 | Rails.application.initialize! 6 | -------------------------------------------------------------------------------- /edd-rails/config/environments/development.rb: -------------------------------------------------------------------------------- 1 | Rails.application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # In the development environment your application's code is reloaded on 5 | # every request. This slows down response time but is perfect for development 6 | # since you don't have to restart the web server when you make code changes. 7 | config.cache_classes = false 8 | 9 | # Do not eager load code on boot. 10 | config.eager_load = false 11 | 12 | # Show full error reports and disable caching. 13 | config.consider_all_requests_local = true 14 | config.action_controller.perform_caching = false 15 | 16 | # Don't care if the mailer can't send. 17 | config.action_mailer.raise_delivery_errors = false 18 | 19 | # Print deprecation notices to the Rails logger. 20 | config.active_support.deprecation = :log 21 | 22 | # Raise an error on page load if there are pending migrations. 23 | config.active_record.migration_error = :page_load 24 | 25 | # Debug mode disables concatenation and preprocessing of assets. 26 | # This option may cause significant delays in view rendering with a large 27 | # number of complex assets. 28 | config.assets.debug = true 29 | 30 | # Asset digests allow you to set far-future HTTP expiration dates on all assets, 31 | # yet still be able to expire them through the digest params. 32 | config.assets.digest = true 33 | 34 | # Adds additional error checking when serving assets at runtime. 35 | # Checks for improperly declared sprockets dependencies. 36 | # Raises helpful error messages. 37 | config.assets.raise_runtime_errors = true 38 | 39 | # Raises error for missing translations 40 | # config.action_view.raise_on_missing_translations = true 41 | end 42 | -------------------------------------------------------------------------------- /edd-rails/config/environments/production.rb: -------------------------------------------------------------------------------- 1 | Rails.application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # Code is not reloaded between requests. 5 | config.cache_classes = true 6 | 7 | # Eager load code on boot. This eager loads most of Rails and 8 | # your application in memory, allowing both threaded web servers 9 | # and those relying on copy on write to perform better. 10 | # Rake tasks automatically ignore this option for performance. 11 | config.eager_load = true 12 | 13 | # Full error reports are disabled and caching is turned on. 14 | config.consider_all_requests_local = false 15 | config.action_controller.perform_caching = true 16 | 17 | # Enable Rack::Cache to put a simple HTTP cache in front of your application 18 | # Add `rack-cache` to your Gemfile before enabling this. 19 | # For large-scale production use, consider using a caching reverse proxy like 20 | # NGINX, varnish or squid. 21 | # config.action_dispatch.rack_cache = true 22 | 23 | # Disable serving static files from the `/public` folder by default since 24 | # Apache or NGINX already handles this. 25 | config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? 26 | 27 | # Compress JavaScripts and CSS. 28 | config.assets.js_compressor = :uglifier 29 | # config.assets.css_compressor = :sass 30 | 31 | # Do not fallback to assets pipeline if a precompiled asset is missed. 32 | config.assets.compile = false 33 | 34 | # Asset digests allow you to set far-future HTTP expiration dates on all assets, 35 | # yet still be able to expire them through the digest params. 36 | config.assets.digest = true 37 | 38 | # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb 39 | 40 | # Specifies the header that your server uses for sending files. 41 | # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache 42 | # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX 43 | 44 | # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 45 | # config.force_ssl = true 46 | 47 | # Use the lowest log level to ensure availability of diagnostic information 48 | # when problems arise. 49 | config.log_level = :debug 50 | 51 | # Prepend all log lines with the following tags. 52 | # config.log_tags = [ :subdomain, :uuid ] 53 | 54 | # Use a different logger for distributed setups. 55 | # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) 56 | 57 | # Use a different cache store in production. 58 | # config.cache_store = :mem_cache_store 59 | 60 | # Enable serving of images, stylesheets, and JavaScripts from an asset server. 61 | # config.action_controller.asset_host = 'http://assets.example.com' 62 | 63 | # Ignore bad email addresses and do not raise email delivery errors. 64 | # Set this to true and configure the email server for immediate delivery to raise delivery errors. 65 | # config.action_mailer.raise_delivery_errors = false 66 | 67 | # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 68 | # the I18n.default_locale when a translation cannot be found). 69 | config.i18n.fallbacks = true 70 | 71 | # Send deprecation notices to registered listeners. 72 | config.active_support.deprecation = :notify 73 | 74 | # Use default logging formatter so that PID and timestamp are not suppressed. 75 | config.log_formatter = ::Logger::Formatter.new 76 | 77 | # Do not dump schema after migrations. 78 | config.active_record.dump_schema_after_migration = false 79 | end 80 | -------------------------------------------------------------------------------- /edd-rails/config/environments/test.rb: -------------------------------------------------------------------------------- 1 | Rails.application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # The test environment is used exclusively to run your application's 5 | # test suite. You never need to work with it otherwise. Remember that 6 | # your test database is "scratch space" for the test suite and is wiped 7 | # and recreated between test runs. Don't rely on the data there! 8 | config.cache_classes = true 9 | 10 | # Do not eager load code on boot. This avoids loading your whole application 11 | # just for the purpose of running a single test. If you are using a tool that 12 | # preloads Rails for running tests, you may have to set it to true. 13 | config.eager_load = false 14 | 15 | # Configure static file server for tests with Cache-Control for performance. 16 | config.serve_static_files = true 17 | config.static_cache_control = 'public, max-age=3600' 18 | 19 | # Show full error reports and disable caching. 20 | config.consider_all_requests_local = true 21 | config.action_controller.perform_caching = false 22 | 23 | # Raise exceptions instead of rendering exception templates. 24 | config.action_dispatch.show_exceptions = false 25 | 26 | # Disable request forgery protection in test environment. 27 | config.action_controller.allow_forgery_protection = false 28 | 29 | # Tell Action Mailer not to deliver emails to the real world. 30 | # The :test delivery method accumulates sent emails in the 31 | # ActionMailer::Base.deliveries array. 32 | config.action_mailer.delivery_method = :test 33 | 34 | # Randomize the order test cases are executed. 35 | config.active_support.test_order = :random 36 | 37 | # Print deprecation notices to the stderr. 38 | config.active_support.deprecation = :stderr 39 | 40 | # Raises error for missing translations 41 | # config.action_view.raise_on_missing_translations = true 42 | end 43 | -------------------------------------------------------------------------------- /edd-rails/config/initializers/assets.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Version of your assets, change this if you want to expire all your assets. 4 | Rails.application.config.assets.version = '1.0' 5 | 6 | # Add additional assets to the asset load path 7 | # Rails.application.config.assets.paths << Emoji.images_path 8 | 9 | # Precompile additional assets. 10 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 11 | # Rails.application.config.assets.precompile += %w( search.js ) 12 | -------------------------------------------------------------------------------- /edd-rails/config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! 8 | -------------------------------------------------------------------------------- /edd-rails/config/initializers/cookies_serializer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.action_dispatch.cookies_serializer = :json 4 | -------------------------------------------------------------------------------- /edd-rails/config/initializers/filter_parameter_logging.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Configure sensitive parameters which will be filtered from the log file. 4 | Rails.application.config.filter_parameters += [:password] 5 | -------------------------------------------------------------------------------- /edd-rails/config/initializers/inflections.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new inflection rules using the following format. Inflections 4 | # are locale specific, and you may define rules for as many different 5 | # locales as you wish. All of these examples are active by default: 6 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 7 | # inflect.plural /^(ox)$/i, '\1en' 8 | # inflect.singular /^(ox)en/i, '\1' 9 | # inflect.irregular 'person', 'people' 10 | # inflect.uncountable %w( fish sheep ) 11 | # end 12 | 13 | # These inflection rules are supported but not enabled by default: 14 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 15 | # inflect.acronym 'RESTful' 16 | # end 17 | -------------------------------------------------------------------------------- /edd-rails/config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | -------------------------------------------------------------------------------- /edd-rails/config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.session_store :cookie_store, key: '_edd-rails_session' 4 | -------------------------------------------------------------------------------- /edd-rails/config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] if respond_to?(:wrap_parameters) 9 | end 10 | 11 | # To enable root element in JSON for ActiveRecord objects. 12 | # ActiveSupport.on_load(:active_record) do 13 | # self.include_root_in_json = true 14 | # end 15 | -------------------------------------------------------------------------------- /edd-rails/config/locales/en.yml: -------------------------------------------------------------------------------- 1 | # Files in the config/locales directory are used for internationalization 2 | # and are automatically loaded by Rails. If you want to use locales other 3 | # than English, add the necessary files in this directory. 4 | # 5 | # To use the locales, use `I18n.t`: 6 | # 7 | # I18n.t 'hello' 8 | # 9 | # In views, this is aliased to just `t`: 10 | # 11 | # <%= t('hello') %> 12 | # 13 | # To use a different locale, set it with `I18n.locale`: 14 | # 15 | # I18n.locale = :es 16 | # 17 | # This would use the information in config/locales/es.yml. 18 | # 19 | # To learn more, please read the Rails Internationalization guide 20 | # available at http://guides.rubyonrails.org/i18n.html. 21 | 22 | en: 23 | hello: "Hello world" 24 | -------------------------------------------------------------------------------- /edd-rails/config/routes.rb: -------------------------------------------------------------------------------- 1 | Rails.application.routes.draw do 2 | # The priority is based upon order of creation: first created -> highest priority. 3 | # See how all your routes lay out with "rake routes". 4 | 5 | # You can have the root of your site routed with "root" 6 | # root 'welcome#index' 7 | 8 | # Example of regular route: 9 | # get 'products/:id' => 'catalog#view' 10 | 11 | # Example of named route that can be invoked with purchase_url(id: product.id) 12 | # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase 13 | 14 | # Example resource route (maps HTTP verbs to controller actions automatically): 15 | # resources :products 16 | # 17 | namespace :api, format: :json do 18 | resources :slides 19 | end 20 | get '/(*path)' => "demo#index", as: :root, format: :html 21 | # Example resource route with options: 22 | # resources :products do 23 | # member do 24 | # get 'short' 25 | # post 'toggle' 26 | # end 27 | # 28 | # collection do 29 | # get 'sold' 30 | # end 31 | # end 32 | 33 | # Example resource route with sub-resources: 34 | # resources :products do 35 | # resources :comments, :sales 36 | # resource :seller 37 | # end 38 | 39 | # Example resource route with more complex sub-resources: 40 | # resources :products do 41 | # resources :comments 42 | # resources :sales do 43 | # get 'recent', on: :collection 44 | # end 45 | # end 46 | 47 | # Example resource route with concerns: 48 | # concern :toggleable do 49 | # post 'toggle' 50 | # end 51 | # resources :posts, concerns: :toggleable 52 | # resources :photos, concerns: :toggleable 53 | 54 | # Example resource route within a namespace: 55 | # namespace :admin do 56 | # # Directs /admin/products/* to Admin::ProductsController 57 | # # (app/controllers/admin/products_controller.rb) 58 | # resources :products 59 | # end 60 | end 61 | -------------------------------------------------------------------------------- /edd-rails/config/secrets.yml: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Your secret key is used for verifying the integrity of signed cookies. 4 | # If you change this key, all old signed cookies will become invalid! 5 | 6 | # Make sure the secret is at least 30 characters and all random, 7 | # no regular words or you'll be exposed to dictionary attacks. 8 | # You can use `rake secret` to generate a secure secret key. 9 | 10 | # Make sure the secrets in this file are kept private 11 | # if you're sharing your code publicly. 12 | 13 | development: 14 | secret_key_base: 6de64324c2b31cf5e7f8d3ed46fa75531b6600229bea7d67678d627b01fb3d0c95e2bf15dae85023c17294ba0222d0b06ea381626cdd927cb091c4ff42690856 15 | 16 | test: 17 | secret_key_base: 62d65ea45b052cacbddfb4073c293a150870aad07ff07900d7015496f2be5d289ebc00f915c80bed8186dfb7d9b96d8ae3a1e52324b44182b5ae87bd82e5f219 18 | 19 | # Do not keep production secrets in the repository, 20 | # instead read values from the environment. 21 | production: 22 | secret_key_base: 6de64324c2b31cf5e7f8d3ed46fa75531b6600229bea7d67678d627b01fb3d0c95e2bf15dae85023c17294ba0222d0b06ea381626cdd927cb091c4ff42690856 23 | -------------------------------------------------------------------------------- /edd-rails/config/unicorn.rb: -------------------------------------------------------------------------------- 1 | worker_processes 4 2 | 3 | listen 3000 4 | timeout 30 5 | 6 | app_root = File.expand_path(File.join(File.dirname(__FILE__), '..')) 7 | working_directory app_root 8 | 9 | # explicitly set the binary name to the ruby env wrapper 10 | # we have for unicorn 11 | Unicorn::HttpServer::START_CTX[0] = "#{app_root}/bin/unicorn" 12 | 13 | preload_app true 14 | 15 | pid app_root + '/log/unicorn.pid' 16 | stderr_path app_root + '/log/unicorn.stderr.log' 17 | stdout_path app_root + '/log/unicorn.stdout.log' 18 | 19 | before_fork do |server, worker| 20 | # unicorn master doesn't need an open conneciton 21 | ActiveRecord::Base.connection.disconnect! if defined?(ActiveRecord::Base) 22 | 23 | # Throttle the master from forking too quickly by sleeping. Due 24 | # to the implementation of standard Unix signal handlers, this 25 | # helps (but does not completely) prevent identical, repeated signals 26 | # from being lost when the receiving process is busy. 27 | # from: unicorn/examples/unicorn.conf.rb 28 | sleep 1 29 | end 30 | 31 | after_fork do |server, worker| 32 | # but unicorn workers sure do 33 | ActiveRecord::Base.establish_connection if defined?(ActiveRecord::Base) 34 | 35 | # seamless deploy recipe courtesy of 36 | # http://codelevy.com/2010/02/09/getting-started-with-unicorn 37 | # i.e. you can run 38 | # $ PID=log/unicorn.pid; test -s "$PID" && kill -USR2 `cat $PID` 39 | # from the app root to load the new code and have the workers 40 | # kill the old master process before forking 41 | # 42 | # note: see http://unicorn.bogomips.org/SIGNALS.html for an 43 | # even safer seamless restart setup (but requires enough RAM 44 | # to run two unicorn masters and two sets of workers) 45 | old_pid = app_root + '/log/unicorn.pid.oldbin' 46 | if File.exists?(old_pid) && server.pid != old_pid 47 | begin 48 | Process.kill("QUIT", File.read(old_pid).to_i) 49 | rescue Errno::ENOENT, Errno::ESRCH 50 | # someone else did our job for us 51 | end 52 | end 53 | end 54 | 55 | before_exec do |server| 56 | # note: as of bundler v1.0.3 the executable template fully 57 | # resolves all symlinks when determining the Gemfile path. 58 | # this sets it back to the symlinked current path. 59 | ENV['BUNDLE_GEMFILE'] = "#{app_root}/Gemfile" 60 | end 61 | -------------------------------------------------------------------------------- /edd-rails/db/seeds.rb: -------------------------------------------------------------------------------- 1 | # This file should contain all the record creation needed to seed the database with its default values. 2 | # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). 3 | # 4 | # Examples: 5 | # 6 | # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) 7 | # Mayor.create(name: 'Emanuel', city: cities.first) 8 | -------------------------------------------------------------------------------- /edd-rails/lib/assets/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/lib/assets/.keep -------------------------------------------------------------------------------- /edd-rails/lib/tasks/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/lib/tasks/.keep -------------------------------------------------------------------------------- /edd-rails/log/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/log/.keep -------------------------------------------------------------------------------- /edd-rails/public/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The page you were looking for doesn't exist (404) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

The page you were looking for doesn't exist.

62 |

You may have mistyped the address or the page may have moved.

63 |
64 |

If you are the application owner check the logs for more information.

65 |
66 | 67 | 68 | -------------------------------------------------------------------------------- /edd-rails/public/422.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The change you wanted was rejected (422) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

The change you wanted was rejected.

62 |

Maybe you tried to change something you didn't have access to.

63 |
64 |

If you are the application owner check the logs for more information.

65 |
66 | 67 | 68 | -------------------------------------------------------------------------------- /edd-rails/public/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | We're sorry, but something went wrong (500) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

We're sorry, but something went wrong.

62 |
63 |

If you are the application owner check the logs for more information.

64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /edd-rails/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/public/favicon.ico -------------------------------------------------------------------------------- /edd-rails/public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | # User-agent: * 5 | # Disallow: / 6 | -------------------------------------------------------------------------------- /edd-rails/public/slides/01.md: -------------------------------------------------------------------------------- 1 | # Ember Deploy Demo 2 | 3 | ## @ghedamat 4 | -------------------------------------------------------------------------------- /edd-rails/public/slides/02.md: -------------------------------------------------------------------------------- 1 | # [ember-cli-deploy](https://github.com/ember-cli/ember-cli-deploy) 2 | 3 | ### thanks to 4 | @lukemelia 5 | @levelbossmike 6 | @elucid 7 | and many others 8 | 9 | 10 | -------------------------------------------------------------------------------- /edd-rails/public/slides/03.md: -------------------------------------------------------------------------------- 1 | # [Watch Luke's talk from EmberConf 2015](https://www.youtube.com/watch?v=4EDetv_Rw5U) 2 | -------------------------------------------------------------------------------- /edd-rails/public/slides/04.md: -------------------------------------------------------------------------------- 1 | # Lots of very good resources out there 2 | 3 | * [abuiles](http://blog.abuiles.com/blog/2014/07/08/lightning-fast-deployments-with-rails/) 4 | * [Ben Limmer](http://benlimmer.com/2015/05/31/deploying-a-location-aware-ember-app/) 5 | -------------------------------------------------------------------------------- /edd-rails/public/slides/05.md: -------------------------------------------------------------------------------- 1 | # Q. So why this talk? 2 | -------------------------------------------------------------------------------- /edd-rails/public/slides/06.md: -------------------------------------------------------------------------------- 1 | # A. To showcase a possible full-stack solution 2 | ## that works in Production AND development 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/07.md: -------------------------------------------------------------------------------- 1 | # Q. So we have to see Rails code again? 2 | -------------------------------------------------------------------------------- /edd-rails/public/slides/08.md: -------------------------------------------------------------------------------- 1 | # A. Yes, but only a tiny bit! 2 | ## And you can port it in any other language, I promise 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/09.md: -------------------------------------------------------------------------------- 1 | # Let's dive in! 2 | -------------------------------------------------------------------------------- /edd-rails/public/slides/10.md: -------------------------------------------------------------------------------- 1 | # Part 1 2 | # Server Implementation 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/11.md: -------------------------------------------------------------------------------- 1 | 1. pick your server app 2 | 1. ensure you have Redis installed 3 | 1. add route to serve ember application 4 | 1. code that fetches Ember's `index.html` from Redis 5 | 1. manipulate index if needed 6 | 1. serve it! 7 | -------------------------------------------------------------------------------- /edd-rails/public/slides/12.md: -------------------------------------------------------------------------------- 1 | # [Controller Code](https://github.com/ghedamat/ember-deploy-demo/blob/master/edd-rails/app/controllers/demo_controller.rb) 2 | -------------------------------------------------------------------------------- /edd-rails/public/slides/13.md: -------------------------------------------------------------------------------- 1 | 1. Serves activated index by default 2 | 1. Takes an optional revision parameter 3 | 1. Serves `__development__` index in **development** env 4 | -------------------------------------------------------------------------------- /edd-rails/public/slides/14.md: -------------------------------------------------------------------------------- 1 | # Part 2 2 | # Ember cli dependencies 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/15.md: -------------------------------------------------------------------------------- 1 | npm install ember-cli-deploy --save-dev 2 | npm install ember-deploy-redis ember-deploy-s3 --save-dev 3 | npm install --save-dev ember-cli-redis-proxy 4 | npm install --save-dev dotenv 5 | -------------------------------------------------------------------------------- /edd-rails/public/slides/16.md: -------------------------------------------------------------------------------- 1 | # Part 3 2 | # Amazon Fun! 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/17.md: -------------------------------------------------------------------------------- 1 | 1. create an **s3** bucket 2 | 1. add CORS configuration for fonts 3 | 1. create **cloudfront** distribution 4 | 1. REMEMBER to set `Origin Allows` headers (for fonts) 5 | -------------------------------------------------------------------------------- /edd-rails/public/slides/18.md: -------------------------------------------------------------------------------- 1 | # Part 4 2 | ## Add some configurations 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/19.md: -------------------------------------------------------------------------------- 1 | # Add config/deploy.js 2 | 3 | ## [example](https://github.com/ghedamat/ember-deploy-demo/blob/master/edd-cli/config/deploy.js) 4 | 5 | use **dotenv** to load `ENV` variables 6 | 7 | **SSH proxying** for pushing to redis got recently added! 8 | -------------------------------------------------------------------------------- /edd-rails/public/slides/20.md: -------------------------------------------------------------------------------- 1 | # Edit Brocfile 2 | 3 | ## [example](https://github.com/ghedamat/ember-deploy-demo/blob/master/edd-cli/Brocfile.js) 4 | 5 | use **fingerprinting** to add cloudfront paths to your assets 6 | -------------------------------------------------------------------------------- /edd-rails/public/slides/21.md: -------------------------------------------------------------------------------- 1 | # Add .env variables 2 | 3 | ## [example](https://github.com/ghedamat/ember-deploy-demo/blob/master/edd-cli/.env.example) 4 | PRODUCTION_USERNAME= 5 | PRODUCTION_KEY_PATH= 6 | PRODUCTION_HOST= 7 | PRODUCTION_PORT= 8 | AWS_ACCESS_KEY= 9 | AWS_SECRET_KEY= 10 | -------------------------------------------------------------------------------- /edd-rails/public/slides/22.md: -------------------------------------------------------------------------------- 1 | # Part 5 2 | ## Deploy! 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/23.md: -------------------------------------------------------------------------------- 1 | ember deploy --environment=production 2 | ember deploy:list --environment=production 3 | ember deploy:activate --environment=production --revision edd-cli:XXXXXXXX 4 | -------------------------------------------------------------------------------- /edd-rails/public/slides/24.md: -------------------------------------------------------------------------------- 1 | # Part 6 2 | ## Demo! 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/25.md: -------------------------------------------------------------------------------- 1 | * run the two apps locally 2 | * deploy them separately 3 | * visit remote url 4 | * profit 5 | -------------------------------------------------------------------------------- /edd-rails/public/slides/26.md: -------------------------------------------------------------------------------- 1 | #Part 7 2 | ## Caveats 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/27.md: -------------------------------------------------------------------------------- 1 | # Fonts in development 2 | 3 | npm install -save-dev cors 4 | npm i --save-dev connect-restreamer 5 | 6 | Add [server/index.js](https://github.com/ghedamat/ember-deploy-demo/blob/master/edd-cli/server/index.js) 7 | 8 | -------------------------------------------------------------------------------- /edd-rails/public/slides/28.md: -------------------------------------------------------------------------------- 1 | # Live Reload 2 | 3 | * still not good 4 | * few solutions out there 5 | * more on this in person 6 | -------------------------------------------------------------------------------- /edd-rails/public/slides/29.md: -------------------------------------------------------------------------------- 1 | # Thanks! 2 | ## [@ghedamat](https://github.com/ghedamat) (Unspace) 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/30.md: -------------------------------------------------------------------------------- 1 | # [Slides](http://ember-deploy-demo.ghedamat.com/) 2 | # [Code](https://github.com/ghedamat/ember-deploy-demo) 3 | -------------------------------------------------------------------------------- /edd-rails/public/slides/31.md: -------------------------------------------------------------------------------- 1 | # one last thing 2 | 3 | -------------------------------------------------------------------------------- /edd-rails/test/controllers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/test/controllers/.keep -------------------------------------------------------------------------------- /edd-rails/test/fixtures/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/test/fixtures/.keep -------------------------------------------------------------------------------- /edd-rails/test/helpers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/test/helpers/.keep -------------------------------------------------------------------------------- /edd-rails/test/integration/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/test/integration/.keep -------------------------------------------------------------------------------- /edd-rails/test/mailers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/test/mailers/.keep -------------------------------------------------------------------------------- /edd-rails/test/models/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/test/models/.keep -------------------------------------------------------------------------------- /edd-rails/test/test_helper.rb: -------------------------------------------------------------------------------- 1 | ENV['RAILS_ENV'] ||= 'test' 2 | require File.expand_path('../../config/environment', __FILE__) 3 | require 'rails/test_help' 4 | 5 | class ActiveSupport::TestCase 6 | # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. 7 | fixtures :all 8 | 9 | # Add more helper methods to be used by all tests here... 10 | end 11 | -------------------------------------------------------------------------------- /edd-rails/vendor/assets/javascripts/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/vendor/assets/javascripts/.keep -------------------------------------------------------------------------------- /edd-rails/vendor/assets/stylesheets/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghedamat/ember-deploy-demo/7397c05710a3a70578130323fa5899deb24dd8fd/edd-rails/vendor/assets/stylesheets/.keep --------------------------------------------------------------------------------