Permalink
Browse files

First commit.

  • Loading branch information...
0 parents commit 60a1b72abcba37a48930b5487bd60721696cd718 @NilsLattek committed Jan 21, 2012
@@ -0,0 +1,6 @@
+.DS_Store
+
+.bundle/
+bin/
+tmp/
+node_modules/
@@ -0,0 +1,5 @@
+# ignore js files in the following folders:
+/public/*
+/assets/*
+/tmp/*
+./README.md
@@ -0,0 +1,71 @@
+# credits to http://stackoverflow.com/a/8564949/296042
+
+require "json"
+require "uglifier"
+require "rake-pipeline-web-filters"
+
+# this gives you concat, coffee_script, and minispade methods
+require "rake-pipeline-web-filters/helpers"
+
+class HandlebarsFilter < Rake::Pipeline::Filter
+ def initialize(&block)
+ block ||= proc { |input| input.sub(/\.handlebars$/, '.js') }
+ super(&block)
+ end
+
+ def generate_output(inputs, output)
+ inputs.each do |input|
+ output.write "return Ember.Handlebars.compile(#{input.read.to_json})"
+ end
+ end
+end
+
+# process all js, css and html files in app/assets
+input "assets"
+
+# processed files should be outputted to public
+output "public"
+
+match "libs/*.js" do
+ concat [
+ "js/libs/jquery.js",
+ "js/libs/ember.js",
+ "js/libs/minispade.js"
+ ], "application.libs.js"
+end
+
+# process all coffee files
+#match "**/*.coffee" do
+match "js/{models,controllers,views,states}/**/*.js" do
+ # compile all CoffeeScript files. the output file
+ # for the compilation should be the input name
+ # with the .coffee extension replaced with .js
+ #coffee_script
+ #filter Rake::Pipeline::Web::Filters::CoffeeScriptFilter
+
+ filter Rake::Pipeline::Web::Filters::MinispadeFilter,
+ :module_id_generator => proc { |input| input.path.sub(/js\//, '').sub(/\.js$/, '') }
+
+ filter Rake::Pipeline::ConcatFilter, "application.scripts.js"
+end
+
+# Take all SCSS inputs and compile them with Sass
+#match "*.scss" do
+# filter Rake::Pipeline::Web::Filters::SassCompiler
+#end
+
+match "**/*.handlebars" do
+ filter HandlebarsFilter
+ minispade :module_id_generator => proc { |input| input.path.sub(/js\//, '').sub(/\.js$/, '') }
+ concat "application.templates.js"
+end
+
+
+match "*.js" do
+ #if ENV['RAKEP_ENV'] == "production"
+ #uglify
+ concat ["application.libs.js", "application.templates.js", "application.scripts.js"], "js/application.js"
+ #else
+ # concat
+ #end
+end
11 Gemfile
@@ -0,0 +1,11 @@
+# A sample Gemfile
+source "https://rubygems.org"
+
+gem "rack"
+gem "tilt"
+gem "sass"
+gem "compass"
+gem "coffee-script"
+gem "uglifier"
+gem "rake-pipeline-web-filters"
+gem "rack-streaming-proxy"
@@ -0,0 +1,44 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ chunky_png (1.2.5)
+ coffee-script (2.2.0)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.2.0)
+ compass (0.11.7)
+ chunky_png (~> 1.2)
+ fssm (>= 0.2.7)
+ sass (~> 3.1)
+ execjs (1.3.0)
+ multi_json (~> 1.0)
+ fssm (0.2.8.1)
+ multi_json (1.0.4)
+ rack (1.4.0)
+ rack-streaming-proxy (1.0.3)
+ rack (>= 1.0)
+ servolux (~> 0.8.1)
+ rake (0.9.2.2)
+ rake-pipeline (0.5.0)
+ rake (~> 0.9.0)
+ rake-pipeline-web-filters (0.5.0)
+ rake-pipeline
+ sass (3.1.12)
+ servolux (0.8.1)
+ tilt (1.3.3)
+ uglifier (1.2.2)
+ execjs (>= 0.3.0)
+ multi_json (>= 1.0.2)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ coffee-script
+ compass
+ rack
+ rack-streaming-proxy
+ rake-pipeline-web-filters
+ sass
+ tilt
+ uglifier
@@ -0,0 +1,73 @@
+##ember.js + node.js + rake-pipeline
+
+This example shows how to work with ember.js and node.js using rake-pipeline as the build tool.
+It also uses the ember.js statemanager for completeness.
+
+It is based on the standard todo list example, but it is split across multiple files and it loads an initial set of todos from the node.js server.
+Feel free to use it as a basis template for your applications.
+
+##Usage
+The following steps were tested with the following environment:
+
+ MacOS 10.7.2
+ Ruby 1.9.3p0
+ Ruby Gems 1.8.13
+ Node.js 0.6.6
+ npm 1.1.0-2
+
+At first we need to install bundler to get all the ruby gems like rake-pipeline.
+Use the latest version of bundler (v1.1):
+
+ $ sudo gem install bundler --pre
+
+Install required gems:
+
+ $ bundle install --binstubs
+
+Install node.js if you haven't already: http://nodejs.org/
+
+Install npm:
+
+ $ curl http://npmjs.org/install.sh | sh
+
+Check out this git repository:
+
+ $ git clone https://github.com/NilsLattek/ember-node-rakepipeline-boilerplate.git
+
+Remove git history if you want to use this example as a template for your project:
+
+ $ rm -rf .git
+
+Install node packages for the node.js server:
+
+ $ npm install .
+
+Start the server to concatenate your javascript files, it also starts a proxy server which redirects request starting with '/api' to 'http://localhost:3000/api':
+
+ $ bin/rackup
+
+Open a second terminal and navigate to your project directory and start the node.js server:
+
+ $ node server.js
+
+Or use nodemon for watching your server files and automatically restart the server:
+
+ $ npm install -g nodemon
+ $ nodemon server.js
+
+Open your browser and browse to:
+
+ http://localhost:9292
+
+
+Roadmap:
+- Use ember.data for fetching records
+- Provide a coffeescript version
+- Create basic folder structure for the node.js server
+- Send new todos back to the server
+- add uglify.js or something similar to the assetfile
+
+
+Credits go out to:
+[dudleyf](https://github.com/dudleyf) for providing tipps about creating an AssetFile
+and all the other folks behind these awesome frameworks!
@@ -0,0 +1,141 @@
+
+/* ==== Scroll down to find where to put your styles :) ==== */
+
+/* HTML5 ✰ Boilerplate */
+
+html, body, div, span, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
+small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+
+blockquote, q { quotes: none; }
+blockquote:before, blockquote:after,
+q:before, q:after { content: ''; content: none; }
+ins { background-color: #ff9; color: #000; text-decoration: none; }
+mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; }
+del { text-decoration: line-through; }
+abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; }
+table { border-collapse: collapse; border-spacing: 0; }
+hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
+input, select { vertical-align: middle; }
+
+body { font:13px/1.231 sans-serif; *font-size:small; }
+select, input, textarea, button { font:99% sans-serif; }
+pre, code, kbd, samp { font-family: monospace, sans-serif; }
+
+html { overflow-y: scroll; }
+a:hover, a:active { outline: none; }
+ul, ol { margin-left: 2em; }
+ol { list-style-type: decimal; }
+nav ul, nav li { margin: 0; list-style:none; list-style-image: none; }
+small { font-size: 85%; }
+strong, th { font-weight: bold; }
+td { vertical-align: top; }
+
+sub, sup { font-size: 75%; line-height: 0; position: relative; }
+sup { top: -0.5em; }
+sub { bottom: -0.25em; }
+
+pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; padding: 15px; }
+textarea { overflow: auto; }
+.ie6 legend, .ie7 legend { margin-left: -7px; }
+input[type="radio"] { vertical-align: text-bottom; }
+input[type="checkbox"] { vertical-align: bottom; }
+.ie7 input[type="checkbox"] { vertical-align: baseline; }
+.ie6 input { vertical-align: text-bottom; }
+label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; }
+button, input, select, textarea { margin: 0; }
+input:valid, textarea:valid { }
+input:invalid, textarea:invalid { border-radius: 1px; -moz-box-shadow: 0px 0px 5px red; -webkit-box-shadow: 0px 0px 5px red; box-shadow: 0px 0px 5px red; }
+.no-boxshadow input:invalid, .no-boxshadow textarea:invalid { background-color: #f0dddd; }
+
+::-moz-selection{ background: #FF5E99; color:#fff; text-shadow: none; }
+::selection { background:#FF5E99; color:#fff; text-shadow: none; }
+a:link { -webkit-tap-highlight-color: #FF5E99; }
+
+button { width: auto; overflow: visible; }
+.ie7 img { -ms-interpolation-mode: bicubic; }
+
+body, select, input, textarea { color: #444; }
+h1, h2, h3, h4, h5, h6 { font-weight: bold; }
+a, a:active, a:visited { color: #607890; }
+a:hover { color: #036; }
+
+/*
+ // ========================================== \\
+ || ||
+ || Your styles ! ||
+ || ||
+ \\ ========================================== //
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; }
+.hidden { display: none; visibility: hidden; }
+.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
+.visuallyhidden.focusable:active,
+.visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; }
+.invisible { visibility: hidden; }
+.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
+.clearfix:after { clear: both; }
+.clearfix { zoom: 1; }
+
+
+@media all and (orientation:portrait) {
+
+}
+
+@media all and (orientation:landscape) {
+
+}
+
+@media screen and (max-device-width: 480px) {
+
+ /* html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */
+}
+
+
+@media print {
+ * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important;
+ -ms-filter: none !important; }
+ a, a:visited { color: #444 !important; text-decoration: underline; }
+ a[href]:after { content: " (" attr(href) ")"; }
+ abbr[title]:after { content: " (" attr(title) ")"; }
+ .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
+ pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
+ thead { display: table-header-group; }
+ tr, img { page-break-inside: avoid; }
+ @page { margin: 0.5cm; }
+ p, h2, h3 { orphans: 3; widows: 3; }
+ h2, h3{ page-break-after: avoid; }
+}
Oops, something went wrong.

0 comments on commit 60a1b72

Please sign in to comment.