Coloque controladores / modelos / visualizações EmberJS nas pastas app / * do Rails

Recentemente, tenho experimentado o EmberJS e um aplicativo Rails API. A configuração inicial da árvore para modelos / visualizações / controladores era mais ou menos assim:

.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
└── app
  
├── assets
  
│   ├── javascripts
  
│   │   ├── controllers
  
│   │   ├── helpers
  
│   │   ├── routes
  
│   │   ├── templates
  
│   │   ├── views
  
├── controllers
  
├── models
  
└── views
  
└── index.html.haml

Da minha perspectiva, as subárvores de app / assets / javascripts e app / eram muito semelhantes. Achei que seria legal ter os arquivos javascript que representam o modelo no cliente no mesmo diretório que os modelos no servidor. Então, em vez de:

.
└── app
  
├── assets
  
│   └── javascripts
  
│      └── models
  
|      └── user.js
  
└── models
     
└── user.rb

Pode ser interessante ter esta estrutura:

.
└── app   
  
└── models
     
├── user.rb
└── user.js

Não estou defendendo que seja uma boa ideia … mas achei que seria interessante ver se isso fosse possível. Acontece que tudo o que você precisa fazer é dizer a Sprockets como procurar nos subdiretórios apropriados do aplicativo adicionando isto a application.rb:

module MyApplication
class Application < Rails::Application
config
.assets.paths += %w(models views controllers).map{|p| "#{Rails.root}/app/#{p}"}
end
end

e diga ao arquivo de manifesto sprocket para procurar seus arquivos em application.js:

//= require user