小编Xia*_*Guo的帖子

设计API身份验证

我正在开发一个rails web应用程序,它还为移动设备提供基于JSON的API.移动客户端应首先获得带有(email/pass)的令牌,然后客户端将使用令牌进行后续API调用.

我是Devise的新手,我正在寻找一个Devise API看起来authenticate(email, pass)并期望它返回true/false,然后根据我将创建并交回令牌或返回拒绝消息.但似乎Devise没有提供这样的东西.

我知道Devise 1.3提供了基于JSON的auth,但这与我需要的有点不同 - 我需要生成令牌并处理回客户端,然后在使用令牌完成auth之后.

有人可以给点指点吗?

ruby api json ruby-on-rails devise

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

Rails验证:if => Proc.new还是lambda?

我发现在我看到的所有示例(包括rails文档)中:验证方法的if选项使用Proc.new而不是lambda,例如

class Foo < ActiveRecord::Base
  validates_presence_of :name, :if => Proc.new{|f| .... } # why not lambda here?
end
Run Code Online (Sandbox Code Playgroud)

这有什么理由吗?据我所知,lambda

  1. 参数更严格.
  2. lambda块中的return语句也从块返回,而不是从调用函数返回.

两者似乎都是理想的行为:如果上面提到的选项,我有什么遗漏?

lambda ruby-on-rails

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

ruby调试器直接进入一个块?

在以下Ruby代码中:

#! /usr/bin/env ruby

require 'debugger'

def hello
  puts "hello"
  if block_given?
    yield
  end 
end 

def main
  debugger
  puts "test begin..."
  hello do   # <=  if you are here
    puts "here!" #<= how to get here without setting bp here or step into hello?
  end 
end 

main
Run Code Online (Sandbox Code Playgroud)

这在调试过程中很常见,我不关心产生块的函数的实现,我只是想直接进入块,而不需要在那里手动设置断点.

在ruby-debug19或调试器中是否存在对这种"步入块"的支持?

ruby debugging

9
推荐指数
1
解决办法
1074
查看次数

javascript模块导出模式

有人可以解释什么是出口变量:

从backbone.js复制,我也注意到spine.js使用相同的模式.

https://gist.github.com/1375748

var Backbone;
if (typeof exports !== 'undefined') {
    Backbone = exports;
} else {
    Backbone = root.Backbone = {};
}
Run Code Online (Sandbox Code Playgroud)

javascript design-patterns

7
推荐指数
1
解决办法
4116
查看次数

如何调试vim config(.vimrc)

我有一条线

set cpoptions+=$  "add the '$' sign as change command indicator
Run Code Online (Sandbox Code Playgroud)

在我的.vimrc文件中,但是在启动vim之后

set cpoptions? 
Run Code Online (Sandbox Code Playgroud)

显示未设置'$'选项.如果我输入:在vim中手动设置cpoptions + = $一切正常.

我怀疑在vim初始化期间,在我的.vimrc文件中的行被执行后,该选项以某种方式被重置(可能是一个插件).

我的问题是,vim是否提供命令/工具来调试这样的问题?

我在Mac OS X上使用vim(不是 MacVim).

谢谢!

-Xiaotian

vim

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

设计在Rails中安装的sinatra app的身份验证

我在用 -

  • Rails 3.2.2
  • Ruby 1.9.3
  • 设计2.0.4

我的路径文件如下所示:

Foo::Application.routes.draw do
  devise_for :admins

  root :to => "home#index"
  authenticate :admin do
    mount Simple::App, at: '/simple'
  end 
end
Run Code Online (Sandbox Code Playgroud)

/ simple下的访问需要进行身份验证.

但是,如果没有登录,访问/ simple/*将重定向到/ simple/admin/sign_in而不是/ admin/sign_in,这将创建一个重定向循环.

我是否需要创建自定义failure_app来纠正此行为?

谢谢!

rack ruby-on-rails sinatra devise

4
推荐指数
1
解决办法
1158
查看次数

没有块的Ruby Hash/Array delete_if

根据Ruby Hash/Array文档,delete_if如果没有给出块,该方法返回一个枚举器.这有用吗?有人能举例说明这种模式吗?

ruby

3
推荐指数
1
解决办法
695
查看次数

Rails 3 as_json:only或:methods选项不适用于动态属性

在我的一个Rails 3控制器中,我需要在模型上只返回几个属性的jSON响应,所以我使用了

respond_with foo_list :only => [:id, :name], :methods => []
Run Code Online (Sandbox Code Playgroud)

但仍然在resposne我看到的不仅仅是这两个属性,我注意到那些不受欢迎的属性实际上是从查询选择函数生成的动态属性:

foo_list = Foo.select("count(bar) as dattr1, sum(adafsd) as dattr2")....
Run Code Online (Sandbox Code Playgroud)

有办法解决这个问题吗?或者我必须自己构建哈希?

谢谢!

ruby activerecord json ruby-on-rails

3
推荐指数
1
解决办法
4761
查看次数

bash脚本,调用函数作为条件测试

有人可以告诉我为什么第7行(if语句)会产生错误:

test.sh: line 7: [: command_exists: unary operator expected
Run Code Online (Sandbox Code Playgroud)

谢谢!

#!/usr/bin/env bash

command_exists () {
  command -v "$1" &> /dev/null ;
}

if [ ! command_exists ruby ]; then  # test.sh: line 7: [: command_exists: unary operator expected
  echo 'found ruby'
else
  echo 'ruby not found'
fi
Run Code Online (Sandbox Code Playgroud)

bash scripting

3
推荐指数
1
解决办法
104
查看次数