我正在开发一个rails web应用程序,它还为移动设备提供基于JSON的API.移动客户端应首先获得带有(email/pass)的令牌,然后客户端将使用令牌进行后续API调用.
我是Devise的新手,我正在寻找一个Devise API看起来authenticate(email, pass)并期望它返回true/false,然后根据我将创建并交回令牌或返回拒绝消息.但似乎Devise没有提供这样的东西.
我知道Devise 1.3提供了基于JSON的auth,但这与我需要的有点不同 - 我需要生成令牌并处理回客户端,然后在使用令牌完成auth之后.
有人可以给点指点吗?
rails new app =>
当前的database.yml就像是=>
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000 …Run Code Online (Sandbox Code Playgroud) 我想限制一个Array对象.这怎么可能与红宝石
['one','two','three'].limit(2) => ['one','two']
Run Code Online (Sandbox Code Playgroud)
谢谢你的快速帮助!
有没有办法从Ruby显示运行(shell)命令,但也捕获输出?也许借助一些宝石?
我所说的显示不是在最后打印它,而是在它出现时,所以用户得到运行慢命令时发生的事情的反馈.
可能重复:
Ruby中的含义是什么意思?
我正在从Ruby的Poignant Guide中学习Ruby ,在一些代码示例中,我遇到了似乎用于相同目的的双冒号和点的使用:
File::open( 'idea-' + idea_name + '.txt', 'w' ) do |f|
f << idea
end
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,双冒号用于访问类的open方法File.但是,后来我遇到了使用点来实现相同目的的代码:
require 'wordlist'
# Print each idea out with the words fixed
Dir['idea-*.txt'].each do |file_name|
idea = File.read( file_name )
code_words.each do |real, code|
idea.gsub!( code, real )
end
puts idea
end
Run Code Online (Sandbox Code Playgroud)
这次,使用点来访问类的read方法File.有什么区别:
File.read()
Run Code Online (Sandbox Code Playgroud)
和
File::open()
Run Code Online (Sandbox Code Playgroud) 我试图引用一个关联扩展,但它错误:
NameError (uninitialized constant User::ListerExtension):
app/models/user.rb:2:in `<class:User>'
Run Code Online (Sandbox Code Playgroud)
这是我的实现:
class User < ActiveRecord::Base
include ListerExtension
has_and_belongs_to_many :roles, :uniq => true, :extend => Lister
Run Code Online (Sandbox Code Playgroud)
module ListerExtension
def lister
self.map(&:to_s).join(', ')
end
end
Run Code Online (Sandbox Code Playgroud)
我正在使用Rails v3.1.3.
似乎ruby 2.0.0在混合中添加了"默认"宝石,并且通过gem卸载使它们无法移除.
如何删除所有非默认宝石?
每当我转到带有文件的.rvmrc文件夹时,都会发出警告:
Warning! PATH is not properly set up, '/home/me/.rvm/gems/ruby-2.0.0-p247/bin' is not available,
usually this is caused by shell initialization files - check them for 'PATH=...' entries,
to fix run: 'rvm use ruby-2.0.0-p247'.
Run Code Online (Sandbox Code Playgroud)
我做了rvm use ruby-2.0.0-p247,但警告仍然存在.
注意:没有错误,我能够正常运行我的应用程序,但警告非常烦人.有任何想法吗?
我想each_with_object在哈希上使用,但无法弄清楚我应该如何使用它.这是我有的:
hash = {key1: :value1, key2: :value2}
hash.each_with_object([]) { |k, v, array| array << k }
NoMethodError: undefined method `<<' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
是否可以each_with_object在哈希上使用?如果是,语法是什么?
这可能是一个红宝石问题然后rails问题,但我很确定我能够在vanilla ruby应用程序中执行此操作.
我有强大的params定义.
def trip_params
params.require(:trip).permit(:name, :date)
end
Run Code Online (Sandbox Code Playgroud)
现在我在控制器方法中得到了这些参数.我想做这个.
def save
trip_params[:name] = 'Modifying name in place'
#trip_params[:name] still equals original value passed
end
Run Code Online (Sandbox Code Playgroud)
这永远不会奏效. 名称不会改变.BTW:trip_params的类型是ActionController :: Parameters
如果我做一个标准的ruby脚本,它可以工作.
test = {}
test[:name] = "blah"
test[:name] = "ok"
puts test #{:name=>"ok"}
Run Code Online (Sandbox Code Playgroud)