小编Geo*_*ieF的帖子

使用来自请求标头的auth_token而不是使用Rails 3/devise的POST/PUT参数

我需要在Rails 3.1 API中结合最新版本的设备使用基于令牌的身份验证.到目前为止没问题.

现在我不想将我的:auth_token附加到客户端的POST/PUT参数,而是将此令牌作为请求标头发送,如HTTP_X_MYAPP_AUTH_TOKEN".

我可以说服设计使用它而不是参数中的令牌吗?是否可以实现这两者,以便我的API用户可以通过请求头或POST/PUT参数发送令牌?

问候.费利克斯

authentication ruby-on-rails token devise

24
推荐指数
1
解决办法
2万
查看次数

如何更改Rails 4应用程序的默认端口?

我知道我可以通过-p选项在另一个端口上启动rails服务器.但是,只要我开始webrick,我想为每个应用程序设置另一个端口.

有任何想法吗?

问菲利克斯

port webrick ruby-on-rails-4

24
推荐指数
3
解决办法
3万
查看次数

如何使用Cache-Control控制Varnish和浏览器:Rails环境中的max-age标头?

最近我在Rails应用程序堆栈中添加了一个Varnish实例.可以通过使用Cache-Control Header缓存某个资源来确定其中的Varnish的默认配置,如下所示:

Cache-Control: max-age=86400, public=true
Run Code Online (Sandbox Code Playgroud)

我使用控制器中的expires_in语句实现了那个:

def index
  expires_in 24.hours, public: true
  respond_with 'some content'
end
Run Code Online (Sandbox Code Playgroud)

这很好用.我没想到的是,Cache-Control标头也会影响浏览器.这导致了 - Varnish和我的用户浏览器都缓存某个资源的问题.资源将从varnish中正确清除,但除非达到max-age,否则浏览器不会再次尝试请求它.

所以我想知道我应该将'expires_in'与Varnish结合使用吗?我可以在Varnish前面的Nginx或Apache实例中过滤Cache-Control标头,但这看起来很奇怪.

任何人都可以开导我吗?

问菲利克斯

caching ruby-on-rails varnish http-headers

22
推荐指数
1
解决办法
2万
查看次数

Git post-commit hook作为后台任务

我有一个脚本,我需要在git版本控制下提交项目后运行.因此,我在子目录/ hooks中的项目.git目录中创建了一个post-commit钩子,将其命名为'post-commit',并为其提供了以下内容:

#!/bin/sh
# I am a post-commit hook
/usr/local/bin/my_script &
Run Code Online (Sandbox Code Playgroud)

my_script是可执行的,在/ bin/sh中运行良好.实际上它有几秒钟的运行时间,所以我希望它是背景和从当前shell分离.这就是为什么我把尾随'&'放到我的钩子上.

现在的问题是,'&'似乎被忽略了.当我在OSX Lion下使用gitx 0.7.1时,gitx会在my_script需要运行的时间段内挂起.

我尝试了很多,但是没有让流程本身进入后台.

这有什么不对?

git shell post-commit sh gitx

21
推荐指数
1
解决办法
3021
查看次数

了解class方法的method_added

我想在瞬间做一些魔术,并将类方法添加到某个类中.因此我尝试了以下方法:

module Magic
  def self.included(base)
    base.extend ClassMethods
  end  
  module ClassMethods
    def method_added(name)
      puts "class method '#{name}' added"
    end  
    def some_class_method
      puts "some class method"
    end  
  end  
end

class Foo
  include Magic
  def self.method_added(name)
    puts "instance method #{name} added"
  end  
end
Run Code Online (Sandbox Code Playgroud)

这种方法适用于实例方法,类方法失败.我怎么解决这个问题?有什么建议?

ruby dsl metaprogramming

17
推荐指数
1
解决办法
2244
查看次数

如何在基于Backbone.js的应用程序中干净地获取401

在我的基于Backbone.js的应用程序中,我正在与我的API进行通信,如果没有或使用无效的身份验证令牌,则使用401进行响应.每次收到401时,我都想通过导航到#login页面进行检测.

为了获取401,我成功地包装了Backbone.sync,但是在那一点上我被卡住了.我在这里尝试了几种策略:

  1. throw 'unauthorized'在Backbone :: sync中尝试在我的路由器中获取.失败:'未捕获未授权'

  2. 尝试#.navigate '#login'关闭Backbone :: sync这不仅看起来很奇怪,而且还有我的应用程序基于AMD/require.js的问题,我不能简单地在我的包装sync函数中访问我的Backbone.Router实例.

到目前为止,我看到的唯一解决方案是创建一个"全局可用"的缓存对象,该对象获取对我的路由器实例的引用,然后将其define作为需要的依赖项.那个缓存对象必须是一个单独的东西,并打破了我的整个'请求 - 没有全局和没有命名空间' - 策略.

我有点被困在这里.任何人都能指出我对这个常见问题更清晰的解决方案吗?

javascript amd requirejs backbone.js

8
推荐指数
1
解决办法
2297
查看次数

Howto bootstrap Backbone app与yeoman启用了require.js

我现在和自耕农打了一段时间.我想知道如何完成自举Backbone应用程序的启动并同时启用require.js.

yeoman init
Run Code Online (Sandbox Code Playgroud)

为我提供了一个可以使用AMD风格模块的设置.

yeoman init backbone:all
Run Code Online (Sandbox Code Playgroud)

为我提供了一个Backbone脚手架,但我必须在index.html中手动"包含"我的所有模型,集合等.

有两种方法可以同时拥有吗?

问菲利克斯

amd requirejs backbone.js yeoman

7
推荐指数
2
解决办法
4102
查看次数

当后续请求的答案是204时,为什么OPTIONS请求失败?

我正在构建一个基于Backbone.js的应用程序并面临一个奇怪的问题.

在某个时刻,应用程序请求收集资源,在Chrome(和Safari)内部,我收到如下错误:

XMLHttpRequest cannot load http://api.mydomain.net/v1/foos/00000d/bars/000014/boots Origin http://localhost:3501 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)

好吧,我认为CORS问题并归咎于我的API.然后通过CURL请求这个资源:

curl -i -H'Accept: application/json' -H'X-Auth-Token: pAWp5hrCmXA83GgFzgHC' -XOPTIONS 'http://api.mydomain.net/v1/foos/00000d/bars/000014/boots'
HTTP/1.1 200 OK
Status: 200
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Auth-Token
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

看起来不错,现在是GET:

curl -i -H'Accept: application/json' -H'X-Auth-Token: pAWp5hrCmXA83GgFzgHC' -XGET 'http://api.mydomain.net/v1/foos/00000d/bars/000014/boots'
HTTP/1.1 204 No Content
Status: 204
Cache-Control: no-cache
Content-Length: 0
Content-Type: text/plain
Run Code Online (Sandbox Code Playgroud)

如果我请求包含至少一个对象的靴子集合,一切正常.我认为,我的服务器响应arr完全正常的CORS标头.那么为什么浏览器报告跨源资源问题呢?

是由于text/plain我的204回复的内容类型?

开发工具中的预检(OPTIONS)请求: OPTIONS

请求已中止响应的标头: 得到

javascript ajax xmlhttprequest cors backbone.js

6
推荐指数
1
解决办法
2万
查看次数

如何在Backbone.js集合请求中处理204响应

在我的基于Backbone.js的应用程序中,我正在与我的API进行通信,它响应204状态和空体,以防请求集合但不包含任何数据.在我看来,RESTful API在这种情况下应该如何响应.

在我的应用程序现在我遇到了问题,显然在收到204响应后没有触发任何事件.我试图绑定resetall喜欢:

  FoosCollectionView.prototype.initialize = function() {
    this.collection = new FoosCollection;
    this.collection.bind('reset', this.render, this);
    this.collection.bind('all', this.render, this);
    return this.collection.fetch();
  };
Run Code Online (Sandbox Code Playgroud)

但事件永远不会发生.所以我试着给fetch一些回调:

  FoosCollectionView.prototype.initialize = function() {
    this.collection = new FoosCollection();
    return this.collection.fetch({
      success: function(a, b, c) {
        debugger;
      },
      error: function(a, b, c) {
        debugger;
      },
      complete: function(a, b) {
        debugger;
      }
    });
  };
Run Code Online (Sandbox Code Playgroud)

相同的行为.如果响应是204,则不会达到调试语句.如何处理204响应呢?我是否需要深入挖掘sync并为204添加额外处理,或者Backbone中有什么东西我还不知道?

Thx Felix

ajax jquery backbone.js

5
推荐指数
1
解决办法
1271
查看次数

如何处理React/Flux组件中的状态转换

鉴于我有用户输入反应的AJAX基于搜索字段,请求搜索结果从通过AJAX后端,示出了在下面的搜索字段下拉的结果,允许导航通过经由光标键搜索结果和反作用于esc在按键聪明的方式.

由于当前基于Backbone的组件在很多方面被打破,我想重新实现该搜索组件使用React和可能的Flux架构.

在规划期间,结果表明,我的组件至少有10个不同的状态(可能更多),它必须对actions用户输入触发做出反应,并且还要actions由异步服务器响应触发.

问题1:我应该在a store而不是父组件中建模所有状态吗?这意味着,每个用户输入都会更改存储状态,例如:searchQuery,:searchResults并且我的父视图组件会对该状态的更改做出反应?

问题2:或者我应该在父组件本身中建模所有状态并省略a store,dispatcher并且actions完全?

问题3:store事实证明,独立于处理父组件本身或其中的状态,组件本身可以具有至少10种不同的状态,并且应该只允许一定数量的转换.通常,我会在这里引入一个statemachine实现,在每次接收到一个动作时都会建模:states并允许:transitions和执行转换,store或者在父组件中调用一个回调方法.什么是正确的React way处理statestransitions它们之间states的一个组成部分?

问题4:FluxJavascript 的最新实现是哪种?到目前为止,我已经看到了反流,但我不确定,这是我的毒药.

我愿意接受各种建议.

javascript state-machine flux reactjs refluxjs

5
推荐指数
1
解决办法
1462
查看次数