Skip to content

Instantly share code, notes, and snippets.

@joliss
joliss / gist:2788545
Created May 25, 2012 14:51
Ember routing example
# Works against Ember HEAD.
# Note the routing still changes a lot. This might not work tomorrow.
window.App = Ember.Application.create()
App.Router = Ember.Router.extend
location: 'hash' # hopefully it will auto-pick and support HTML5 in the future
root: Ember.State.extend
index: Ember.State.extend
From 53d61784fafa380fb051b908ac946502a31e0b7d Mon Sep 17 00:00:00 2001
From: Jo Liss <[email protected]>
Date: Thu, 31 May 2012 23:23:53 +0200
Subject: [PATCH] Call preventDefault and stopPropagation on events handled
through {{action}}
The idea is that we'd like to be able to use arbitrary view methods as
action handlers. As it is, they need to `return false` or call
`e.preventDefault(); e.stopPropagation();` to be usable as handlers.
@joliss
joliss / custom-ember.js.erb
Created June 3, 2012 14:27
Auto-switching between prod and dev Ember version. The JS files in the custom-ember directory are symlinks to ../../../ember.js/dist/ember.prod.js etc., where ember.js is a submodule.
<% require_asset 'custom-ember/handlebars' %>
<% if Rails.env.production? %>
<% require_asset 'custom-ember/ember.prod' %>
<% require_asset 'custom-ember/ember-data.prod' %>
<% else %>
<% require_asset 'custom-ember/ember' %>
<% require_asset 'custom-ember/ember-data' %>
<% end %>
@joliss
joliss / assets.rake
Created June 3, 2012 14:28
lib/tasks/assets.rake
desc 'Build all required asset files'
task :assets do
Bundler.with_clean_env do
sh 'cd vendor/ember.js && bundle install --quiet && bundle exec rake'
sh 'cd vendor/ember-data && bundle install --quiet && bundle exec rake'
end
end
task 'test' => :assets
task 'konacha:run' => :assets

Notable libraries in my Rails + Ember stack

General

  • Devise: Devise uses Rails views, so I have the user management separate from the Ember app.

Templating

  • haml-rails
  • hamlbars
@joliss
joliss / gist:2918457
Created June 12, 2012 16:13
App.current_user implementation
window.App = Ember.Application.create
currentUser: Ember.computed(->
App.store.find(App.User, App.getPath('infoData.currentUserId'))
).property('infoData.currentUserId')
@joliss
joliss / gist:2931078
Created June 14, 2012 15:46
transitionTo syntax
App.get('stateManager').transitionTo ['root'], ['elections'],
['show', App.getPath('stateManager.election')], ['positions'],
['show', @get('content')], ['index']
@joliss
joliss / gist:2931083
Created June 14, 2012 15:46
transitionTo syntax
App.get('stateManager').transitionTo ['root'], ['elections'],
['show', App.getPath('stateManager.election')], ['positions'],
['show', @get('content')], ['index']
@joliss
joliss / gist:2966942
Created June 21, 2012 16:46
Ember test setup
App.Dummy = DS.Model.extend()
App.preloadData = (data) ->
App.store.adapter.sideload(App.store, App.Dummy, data, null)
# preloadData is used for both testing and preloading models on page load, delivered through the HTML.
# in test:
fixtureData =
@joliss
joliss / gist:3024937
Created June 30, 2012 18:22
Ember get/getPath unification benchmark
diff --git a/packages/ember-metal/lib/accessors.js b/packages/ember-metal/lib/accessors.js
index 059501c..1c4b013 100644
--- a/packages/ember-metal/lib/accessors.js
+++ b/packages/ember-metal/lib/accessors.js
@@ -54,6 +54,9 @@ var basicSet = function set(obj, keyName, value) {
/** @private */
get = function(obj, keyName) {
Ember.assert("You need to provide an object and key to `get`.", !!obj && keyName);
+ if (keyName.indexOf('.') !== -1) {
+ return Ember.getPath(obj, keyName);