我很难过.我有一个rails应用程序(3.1.3),我一直在建立我最近添加设计(2.0),以创建用户模型和随之而来的相应身份验证.安装完设计并运行rake测试后,我的所有测试都抛出了同样的错误.在单元和功能测试中,我得到了一个如下错误:
ERROR should get index (0.05s)
ActiveRecord::RecordNotUnique: PG::Error: ERROR: duplicate key value violates unique constraint "index_users_on_email"
DETAIL: Key (email)=() already exists.
: INSERT INTO "users" ("created_at", "updated_at", "id") VALUES ('2012-03-30 04:13:13', '2012-03-30 04:13:13', 298486374)
/Users/myname/.rvm/gems/ruby-1.9.2-p290@global/gems/activerecord-3.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `async_exec'
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这会影响我的所有测试,或者是什么导致它.以前有人见过这样的东西吗?我在这做错了什么?
任何建议/帮助将不胜感激!
谢谢!
几个月前,我创建了一个使用oauth2进行身份验证的rails应用程序 - 特别是omniauth-google-oauth2 gem.我已经完成了创建身份验证并存储刷新令牌的所有步骤,但最近oauth2停止发送'refresh_token'作为响应的一部分.最初我收到的回复包含:
credentials: {
refresh_token: XXX,
token: YYY,
expires_at: 1374840767,
expires: true
},
Run Code Online (Sandbox Code Playgroud)
现在我只收回一小时内到期的令牌:
credentials: {
token: YYY,
expires_at: 1374840767,
expires: true
},
Run Code Online (Sandbox Code Playgroud)
我真的不知道我在应用程序方面做了什么来改变这一点,所以我不确定谷歌是否有改变,或者我做了什么.对于上下文,我的代码如下:
初始化/ omniauth.rb:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, 'KEY', 'SECRET', {:scope => "userinfo.email,userinfo.profile,analytics.readonly,adsense.readonly"}
end
Run Code Online (Sandbox Code Playgroud)
authentications_controller.rb是我收到响应的地方:
def create
auth = request.env["omniauth.auth"]
params = request.env["omniauth.params"]
project = Project.find(params['project_id'])
Authentication.create(:project_id => project.id, :provider => auth['provider'], :uid => auth['uid'], :access_token => auth['credentials']['refresh_token'])
flash[:notice] = "Authentication successful."
redirect_to owner_view_project_path(project)
end
Run Code Online (Sandbox Code Playgroud)
我的initializers/omniauth.rb文件中是否可能缺少某些内容?我已经尝试将以下内容添加到选项哈希中,但这似乎没有带回刷新令牌:
:approval_prompt => "force", :access_type => "offline"
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!提前致谢!
我已经根据Ryan Bates的railscast(http://railscasts.com/episodes/288-billing-with-stripe)成功构建了一个rails应用程序 - 然而,在railscast中他没有涵盖webhooks.我想知道在公共领域是否有任何好的例子来实现和使用webhook来管理已经创建的订阅计费.
任何想法/方向都会非常有用吗?
谢谢!
我知道如何导航到页面上的给定锚标记 - 我要做的是链接到目标锚点上方30-40像素的页面的一部分.这样做的原因是我有一个引导程序导航,如果我喜欢直接使用锚点的页面部分,最终会覆盖部分相关内容.
目前我有这个链接:
%a{:href => root_path + "#how_it_works"} How It Works
Run Code Online (Sandbox Code Playgroud)
并在页面上链接到:
.span12#how_it_works
Run Code Online (Sandbox Code Playgroud)
有关如何获取链接导航到略高于.span12#how_it_works的页面部分的任何想法?
我一直在使用Ruby和Nokogiri从类似于来自hollister网站的URL中提取数据:http://www.hollisterco.com/webapp/wcs/stores/servlet/TrackDetail? storeId = 10251&catalogiId = 10201&langId = -1&urL = TrackDetailView&ORDERNUMBER = 1316358
我的脚本现在看起来像这样:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
page = Nokogiri::HTML(open("http://www.hollisterco.com/webapp/wcs/stores/servlet/TrackDetail?storeId=10251&catalogId=10201&langId=-1&URL=TrackDetailView&orderNumber=1316358"))
puts page.css("h3[data-property=GLB_ORDERNUMBERSYMBOL]")[0].text
Run Code Online (Sandbox Code Playgroud)
我的问题是Hollister页面有一些异步的数据加载,这样当我的脚本检查页面区域的页面元素的订单特定数据时,它还不存在.IE浏览器中,<h3>与data-property=GBL_ORDERNUMBERSYMBOL不存在,但在浏览器中,如果你让它加载另一个十秒钟,DOM和HTML的改变,以反映具体订单的详情.
捕获事后加载的数据的最佳方法是什么?我已经尝试过使用watir-webdriver,但不知道我需要做些什么才能让它工作.