This is my upload-file
type for what I use at work. We use angular-upload for the upload
service to do the actual file uploading. We also have several abstractions and use ES6 that may confuse you a little bit (sorry about that). Hopefully this gets you started though.
import DS from 'ember-data'; | |
const ActiveModelAdapter = DS.ActiveModelAdapter; | |
const ApplicationAdapter = ActiveModelAdapter.extend({ | |
shouldReloadAll: function(store, snapshotRecordArray) { | |
return true; | |
}, | |
shouldBackgroundReloadRecord: function(store, snapshot) { | |
return false; |
import DS from 'ember-data'; | |
const ActiveModelAdapter = DS.ActiveModelAdapter; | |
const ApplicationAdapter = ActiveModelAdapter.extend({ | |
shouldReloadAll: function(store, snapshotRecordArray) { | |
return true; | |
}, | |
shouldBackgroundReloadRecord: function(store, snapshot) { | |
return false; |
# Copy and paste this to the rails console to test your email settings | |
class MyMailer < ActionMailer::Base | |
def test_email | |
set_tracking_headers 'test_campaign' | |
@recipients = "[email protected]" | |
@from = "Equipo Nimbo X <hola@" + Rails.application.secrets.sparkpost_domain + ">" | |
@subject = "sparkpost email test with open & click tracking" | |
@body = "This is a test email. With a <a href=\"http://blog.nimbo-x.com/nimbo-x-gold/\">test link</a>." |
// app/transforms/array.js | |
import Ember from 'ember'; | |
import DS from 'ember-data'; | |
export default DS.Transform.extend({ | |
deserialize: function(value) { | |
if (Ember.isArray(value)) { | |
return Ember.A(value); | |
} else { | |
return Ember.A(); |
This is a simplified, but fairly thorough, set of scripts and configuration to enable Heroku Release Phase for Rails apps.
Further, this particular set up plays nicely with Heroku Review Apps in that the release
phase script will:
- Fail, loudly, if the DB does not yet exist.
- Load the DB schema if the current schema version (as determined by
bin/rails db:version
) is0
. - Run DB migrations otherwise.
For a "normal" app that usually means it will run the DB migrations.
L1 cache reference ......................... 0.5 ns
Branch mispredict ............................ 5 ns
L2 cache reference ........................... 7 ns
Mutex lock/unlock ........................... 25 ns
Main memory reference ...................... 100 ns
Compress 1K bytes with Zippy ............. 3,000 ns = 3 µs
Send 2K bytes over 1 Gbps network ....... 20,000 ns = 20 µs
SSD random read ........................ 150,000 ns = 150 µs
Read 1 MB sequentially from memory ..... 250,000 ns = 250 µs
const fda = ( fields ) => { | |
let data = [] | |
for(const f of fields ){ | |
data.push(fd(f)) | |
} | |
return data | |
} | |
const fd = ( field ) => { | |
let data = { |
Firstly, Create React App is good. But it's a very rigid CLI, primarily designed for projects that require very little to no configuration. This makes it great for beginners and simple projects but unfortunately, this means that it's pretty non-extensible. Despite the involvement from big names and a ton of great devs, it has left me wanting a much better developer experience with a lot more polish when it comes to hot reloading, babel configuration, webpack configuration, etc. It's definitely simple and good, but not amazing.
Now, compare that experience to Next.js which for starters has a much larger team behind it provided by a world-class company (Vercel) who are all financially dedicated to making it the best DX you could imagine to build any React application. Next.js is the 💣-diggity. It has amazing docs, great support, can grow with your requirements into SSR or static site generation, etc.