In addition to the techniques described in the
Asynchronous Routing Guide,
the Ember Router provides powerful yet overridable
conventions for customizing asynchronous transitions
between routes by making use of error
and loading
substates.
# Create a folder for our new root structure | |
$ export centos_root='/centos_image/rootfs' | |
$ mkdir -p $centos_root | |
# initialize rpm database | |
$ rpm --root $centos_root --initdb | |
# download and install the centos-release package, it contains our repository sources | |
$ yum reinstall --downloadonly --downloaddir . centos-release | |
$ rpm --root $centos_root -ivh centos-release*.rpm | |
$ rpm --root $centos_root --import $centos_root/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 | |
# install yum without docs and install only the english language files during the process |
// sending to sender-client only | |
socket.emit('message', "this is a test"); | |
// sending to all clients, include sender | |
io.emit('message', "this is a test"); | |
// sending to all clients except sender | |
socket.broadcast.emit('message', "this is a test"); | |
// sending to all clients in 'game' room(channel) except sender |
(function() { | |
var isNone = Ember.isNone; | |
DS.SailsWebSocketRESTAdapter = DS.RESTAdapter.extend({ | |
bulkCommit: false, | |
serializer: DS.FixedRelationsRESTSerializer, | |
createRecords: function(store, type, records) { | |
var adapter = this, serializer = this.serializer, initialRecordsToCreate = []; | |
if (get(this, 'bulkCommit') === false) { | |
records.forEach(function(record) { | |
var deferSave = false | |
record.eachRelationship(function(name, relationship) { |
The Ember router is getting number of enhancements that will greatly enhance its power, reliability, predictability, and ability to handle asynchronous loading logic (so many abilities), particularly when used in conjunction with promises, though the API is friendly enough that a deep understanding of promises is not required for the simpler use cases.
- see https://gist.github.com/machty/5723945 for the latest API (unlikely to change from now on)
- latest Ember build: https://machty.s3.amazonaws.com/ember/ember-async-routing-10.js
Check out the progress on redirectable/preventable transitions.
This consists almost entirely of a rewrite of router.js, with hardly any changes to the Ember codebase. Lots of things have been added router-wise, but this particular demo focuses on how attempted transitions can be intercepted/redirected/prevented/decorated by defining transition event handlers in a transitions
hash on Ember.Route. I also added support for URL-less routes (see the URL-less States Demo at the top in the link below). You can test this out yourself with this branch of Ember, which has the new router.js code i've been working on in it.
I ended up reusing the Emblem test app, so try not to be distracted by the template syntax stuff (sorry, twas most readily available for trying this new transition code). You can check out the code for this transition demo here. Below I've highlighted the m
# ROUTER | |
GWS.Router.map (match) -> | |
#match("/").to("home") # home.handlebars gets rendered automatically and mapped to / | |
# according to guide the previous logic shouldn't be needed. but it won't work without it | |
# you can either use model: () -> or | |
# setupController: (controller, model) -> | |
# controller.set 'content', model |
Node.js core does its best to treat every platform equally. Even if most Node developers use OS X day to day, some use Windows, and most everyone deploys to Linux or Solaris. So it's important to keep your code portable between platforms, whether you're writing a library or an application.
Predictably, most cross-platform issues come from Windows. Things just work differently there! But if you're careful, and follow some simple best practices, your code can run just as well on Windows systems.
On Windows, paths are constructed with backslashes instead of forward slashes. So if you do your directory manipulation