标签: ruby

如何使用devise登录用户?

我有我的rails应用程序,我遇到了一个设计的主要问题.我有一个控制器:

class Users::SessionsController < Devise::SessionsController
  prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
  include Devise::Controllers::InternalHelpers

def new
    clean_up_passwords(build_resource)

    respond_to do |format|
      format.html { render :layout => "sessions" }
      format.mobile
    end
  end


    # POST /resource/sign_in
    def create
      resource = User.find_by_email(params[:user][:email])  
      resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
      set_flash_message :notice, :signed_in
      sign_in_and_redirect(resource_name, resource)
    end

end
Run Code Online (Sandbox Code Playgroud)

问题是它永远不会记录用户,它总是停在这一行

resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
Run Code Online (Sandbox Code Playgroud)

我甚至在实际的宝石文件中放了大量的记录器,看看我是否可以看到任何东西但没有任何东西,我真的不知道如何解决这个问题.如果我注释掉这一行,那么用户就会登录,但如果电子邮件不在数据库中并且适用于任何密码(这绝对不是正确的解决方案),则会失败

我该如何解决?

UPDATE

这有效,但似乎非常hackish

# POST /resource/sign_in
def create
  resource = User.find_by_email(params[:user][:email])

  redirect_to(new_user_session_path, :notice => 'Invalid Email …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails devise warden ruby-on-rails-3

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

如何让Rspec运行嵌套在文件夹下的所有测试?

我喜欢在单独的选项卡中运行Spork运行我的Rspec测试.我经常使用我的测试rspec spec,我打算用"递归搜索并运行spec文件夹中的所有内容".

我最近意识到这实际上没有运行我的所有测试.我现在有一个spec/requests未运行的spec文件.我知道这是因为我编辑了其中一个测试以引发错误,并执行以下操作:

  • rspec spec - 没有错误提出.
  • rspec spec/requests- 仍然没有错误提出,并且0 examples, 0 failures!
  • rspec spec/requests/my_controller.rb- 宾果游戏.17 examples, 1 failure并且失败有我的错误消息.

为什么Rspec找不到我的所有测试文件?这是配置问题,还是我需要使用不同的命令来运行我的测试?

我需要立即运行所有测试,以确保我不会引入回归.

(顺便说一句,不使用Spork没有任何区别.)

ruby rspec ruby-on-rails

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

将JSON数据嵌入到YAML文件中

我正在为我的桌子写一个夹具.并且其中一个coloums将JSON字符串作为值.

问题是夹具没有加载失败,因为:

Fixture::FormatError: a YAML error occurred parsing /home/saurajeet/code/dcbox/test/fixtures/hardware.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html
The exact error was:
  ArgumentError: syntax error on line 145, col 73: `  portslist: [{"name":"ob1","port_num":0,"port_type":"network"},{"name":"ob2","port_nu'.....
Run Code Online (Sandbox Code Playgroud)

任何解决方案.

ruby json yaml ruby-on-rails ruby-on-rails-3

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

如何存储百分比值?

我正在使用Rails 3.2.2,我想在我的数据库表列中存储处理一个百分比值.你有什么指教一下(例如,什么类型的- ,,:integer ,... -列的我应该设置)?是否有关于存储百分比值的必须/应该知道的警报?:float:decimal

精度应为2(1.99%,50.01%,...).

注意:我读过这篇文章.

ruby mysql database ruby-on-rails ruby-on-rails-3

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

如何在ruby中通过SSL调用HTTP POST方法?

所以这是使用curl的请求:

curl -XPOST -H content-type:application/json -d "{\"credentials\":{\"username\":\"username\",\"key\":\"key\"}}" https://auth.api.rackspacecloud.com/v1.1/auth
Run Code Online (Sandbox Code Playgroud)

我一直试图用ruby做同样的请求,但我似乎无法让它工作.

我也尝试了几个库,但我无法让它工作.这是我到目前为止所拥有的:

uri = URI.parse("https://auth.api.rackspacecloud.com")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new("/v1.1/auth")
request.set_form_data({'credentials' => {'username' => 'username', 'key' => 'key'}})
response = http.request(request)
Run Code Online (Sandbox Code Playgroud)

我得到415不支持的媒体类型错误.

ruby ssl https curl

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

以编程方式获得完整的Ruby版本?

我知道可以通过RUBY_VERSION常量获取Ruby版本(例如"1.9.3").但是,我想知道如何确定确切的版本(例如:"1.9.3-p0").原因是在早期版本的Ruby 1.9.3中有一个错误没有修复,它在更高版本中运行,我想在一个gem中使用一些代码来解决这个问题.

ruby version

35
推荐指数
2
解决办法
9945
查看次数

格式化日期对象以显示人类可读日期

这是我想要展示的内容:

May 13, 2012
Run Code Online (Sandbox Code Playgroud)

这是显示的内容:

2012-05-13
Run Code Online (Sandbox Code Playgroud)

我搜索了一些答案,它引导我" 在Ruby中格式化日期和浮动 ",它提到了一个可能的解决方案:

<p class="date"><%= @news_item.postdate.to_s("%B %d, %Y") %></p>
Run Code Online (Sandbox Code Playgroud)

但是,这根本不会改变输出.没有调试错误或异常被触发.

我可以做到这一点,它完美无缺:

<p class="date"><%= Time.now.to_s("%B %d, %Y") %></p>
Run Code Online (Sandbox Code Playgroud)

这是我的迁移文件(查看我使用的数据类型):

class CreateNewsItems < ActiveRecord::Migration
  def change
    create_table :news_items do |t|

      t.date :postdate

      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby format ruby-on-rails date

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

为什么哈希转换为符号的字符串键?

使用Ruby 2.3:

在示例1中,字符串键"a"自动转换为符号,而在示例2中,它保持字符串.

例1

{"a": 1}
# => {:a=>1} 
Run Code Online (Sandbox Code Playgroud)

例2

{"a"=>"c"}
# => {"a"=>"c"}
Run Code Online (Sandbox Code Playgroud)

我认为:与旧式哈希火箭=>语法相同.到底是怎么回事?为什么我在Rails中从未注意到这一点?这HashWithIndifferentAccess是否模糊了这个?

ruby string hash symbols literals

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

Ruby中as_json和to_json方法的区别

什么是两种方法之间的差异as_jsonto_json.它们一样吗?如果没有,它们之间有什么区别?

ruby ruby-on-rails

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

Jekyll默认安装没有_layouts目录

所以我按照Jekyll网站上的指南安装和运行Jekyll(确定我不必在这里发布).并且网站运行正常,但出于某种原因,我没有看到_layouts应该存在的目录.在页面中,我可以看到它引用了一些布局,即:

的index.html

---
layout: default
---

<div class="home">
Run Code Online (Sandbox Code Playgroud)

about.md

---
layout: page
title: About
permalink: /about/
---

This is the base Jekyll theme.
Run Code Online (Sandbox Code Playgroud)

但是当你查看项目的目录结构时:

在此输入图像描述

没有布局文件夹..那是什么?一切都有效.在localhost上运行时看起来非常好.

html ruby jekyll

35
推荐指数
2
解决办法
8715
查看次数

标签 统计

ruby ×10

ruby-on-rails ×6

ruby-on-rails-3 ×3

curl ×1

database ×1

date ×1

devise ×1

format ×1

hash ×1

html ×1

https ×1

jekyll ×1

json ×1

literals ×1

mysql ×1

rspec ×1

ssl ×1

string ×1

symbols ×1

version ×1

warden ×1

yaml ×1