标签: ruby

设计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万
查看次数

Ruby on Rails:我如何为postgresql编辑database.yml?

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)

ruby database postgresql ruby-on-rails ruby-on-rails-3

45
推荐指数
4
解决办法
6万
查看次数

Ruby Array限制方法

我想限制一个Array对象.这怎么可能与红宝石

['one','two','three'].limit(2) => ['one','two']
Run Code Online (Sandbox Code Playgroud)

谢谢你的快速帮助!

ruby arrays

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

从Ruby运行命令显示并捕获输出

有没有办法从Ruby显示运行(shell)命令,但也捕获输出?也许借助一些宝石?

我所说的显示不是在最后打印它,而是在它出现时,所以用户得到运行慢命令时发生的事情的反馈.

ruby

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

.vs ::(点与双冒号)用于调用方法

可能重复:
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)

ruby

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

包含模块时出现"未初始化常量"错误

我试图引用一个关联扩展,但它错误:

NameError (uninitialized constant User::ListerExtension):
  app/models/user.rb:2:in `<class:User>'
Run Code Online (Sandbox Code Playgroud)

这是我的实现:

应用程序/模型/ user.rb

class User < ActiveRecord::Base
  include ListerExtension

  has_and_belongs_to_many :roles, :uniq => true, :extend => Lister
Run Code Online (Sandbox Code Playgroud)

LIB/lister.rb

module ListerExtension
  def lister
    self.map(&:to_s).join(', ')
  end
end
Run Code Online (Sandbox Code Playgroud)

我正在使用Rails v3.1.3.

ruby ruby-on-rails ruby-on-rails-3.1

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

卸载所有宝石Ruby 2.0.0

似乎ruby 2.0.0在混合中添加了"默认"宝石,并且通过gem卸载使它们无法移除.

如何删除所有非默认宝石?

ruby gem ruby-2.0

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

警告!PATH未正确设置,通常这是由shell初始化文件引起的

每当我转到带有文件的.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,但警告仍然存在.

注意:没有错误,我能够正常运行我的应用程序,但警告非常烦人.有任何想法吗?

ruby rvm

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

我应该如何在哈希上使用each_with_object?

我想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在哈希上使用?如果是,语法是什么?

ruby

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

修改ruby hash到位(rails strong params)

这可能是一个红宝石问题然后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)

ruby ruby-on-rails-4

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