我有一个使用Rails作为服务器的EmberJS应用程序。在我的Javascript代码中,我有一些变量会根据应用程序所处的环境而变化。例如,如果应用程序位于开发环境中,我希望JS代码将POST请求发送到localhost:3000,如果是在暂存中,我希望它转到staging.domain.com,如果它正在生产中,它应该转到domain.com。在更改环境之前,不是手动更改所有常量变量,而是根据环境设置JS文件常量的最佳方法是什么?我需要这个的原因是因为ember应用程序正在与外部服务器进行通信以获取其POST请求。
答案 0 :(得分:1)
由于我猜你使用rails提供文件(包括你的ember app js文件),你可以通过将一个rails env变量注入这些文件来实现这一点,例如在索引中执行类似的操作html的:
...
<%= javascript_tag do %>
window._current_host = "<%= Rails.env['SERVER_NAME'] %>"
<% end %>
...
完成此操作后,您可以在javascript代码中使用该全局变量window._current_host
,以满足您的需求:
...
App.ApplicationRoute = Ember.Route.extend({
model: function() {
var url = window._current_host + '/somepath/...';
return Ember.$.getJSON(url, function(data) {
return data;
});
}
});
...
甚至:
DS.RESTAdapter.reopen({
host: window._current_host
});
以上只是伪代码,肯定有更多方法可以做同样的事情,但我想你会得到这个想法。
希望它有所帮助。