我用miniprofiler描述我的rails 3.2应用程序,它向我显示了一个
SELECT 1
Run Code Online (Sandbox Code Playgroud)
在每个页面加载或ajax调用开始时查询.它只需要0.4毫秒,但它仍然是一个看似不必要的数据库查询.
任何人都知道为什么这个查询正在发生或如何摆脱它?

我正在用rspec编写功能规范,并希望每次都跳过登录步骤.用户通过omniauth(无设计)进行身份验证,并设置session[:user]变量然后引用以保持登录状态.我希望能够直接设置会话变量:
require 'spec_helper'
describe "My page" do
it "has what I want on it when logged in" do
user = FactoryGirl.create(:user)
session[:user] = user.id
visit my_path
page.should have_content "Foobar"
end
end
Run Code Online (Sandbox Code Playgroud)
但这给了
Failure/Error: session[:user] = user.id
NameError:
undefined local variable or method `session' for #<RSpec::Core::ExampleGroup::Nested_1:0x007fd13456d170>
Run Code Online (Sandbox Code Playgroud)
有没有办法直接设置会话变量,以便我可以避免大多数测试中的登录步骤?
无论如何移动提示组件使其出现在输入之前?
当前显示的组件按以下顺序显示:标签,输入,提示,错误.我尝试添加:components选项,但这不起作用.
这是我的代码:
<%= f.input :content,
:components => [:label, :hint, :input],
:as => :text,
hint: 'Please 1) include your exact copy here, 2) upload your copy document in the next step, or 3) describe any content services to include in our estimate.',
required: true,
:label => "Copy" %>
Run Code Online (Sandbox Code Playgroud) 我已经下载了我的heroku数据库的最新副本
$ curl -o latest.dump `heroku pg:backups public-url --app myapp`
Run Code Online (Sandbox Code Playgroud)
这会在我的本地计算机上提供以下类型的文件:
$ file db/latest.dump
db/latest.dump: PostgreSQL custom database dump - v1.12-0
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用psql将其导入到我的本地Postgres DB(my_db)中.但是,我遇到了很多错误:
$ psql my_db < db/latest.dump
...
psql:db/latest.dump:119425: invalid command \?A~???b?{#?+????LS??
psql:db/latest.dump:119426: invalid command \D%!?/F??g????A???dC????|2?M?$?8GTJ??c?E?;???Sh??S?[NP?f?2?+H?W????k
... [thousands of lines]
psql:db/latest.dump:261719: ERROR: invalid byte sequence for encoding "UTF8": 0xba
Run Code Online (Sandbox Code Playgroud)
该命令psql -f db/latest.dump my_db以同样的方式失败.
为了将本地文件导入到具有相同模式的新数据库等,需要做些什么?
Chrome不允许儿童iframe阅读自己的Cookie.
我有一个包含子iframe的父网页:
https://first-site.com<iframe src="https://second-site.com">(父母的内部)我控制两个站点,我希望iframe在iframe中执行需要读取cookie的操作.second-site.com.外部父母不需要知道任何关于此的事情.
它适用于除Chrome以外的所有浏览器.
Chrome根本不会让孩子可以使用子页面自己的cookie.
在自己的窗口中访问子页面并执行操作适用于所有浏览器,包括Chrome.
我已经在所有排列中尝试了这两个选项:
secure:false或secure:true用于cookiesandbox="allow-same-origin allow-scripts"为iframe 设置,或删除sandbox属性什么是Chrome的不同之处,Chrome中的iframe如何访问自己的Cookie?
我有一个名为get_books_from_amazon的辅助方法,它执行API调用并返回一个书籍数组.我无法弄清楚如何在我的请求规范中将其存根.
module BooksHelper
def get_books_from_amazon(search_term)
...
end
end
class StaticController < ApplicationController
include BooksHelper
def resources
@books = get_books_from_amazon(search_term)
end
end
Run Code Online (Sandbox Code Playgroud)
我在我的规范中尝试了以下内容,但都无济于事:
# spec/requests/resource_pages_spec.rb
...
describe "Navigation" do
it "should do such and such" do
BooksHelper.stub!(:get_books_from_amazon).and_return(book_array)
StaticHelper.stub!(:get_books_from_amazon).and_return(book_array)
ApplicationHelper.stub!(:get_books_from_amazon).and_return(book_array)
StaticController.stub!(:get_books_from_amazon).and_return(book_array[0..4])
ApplicationController.stub!(:get_books_from_amazon).and_return(book_array[0..4])
request.stub!(:get_books_from_amazon).and_return(book_array)
helper.stub!(:get_books_from_amazon).and_return(book_array)
controller.stub!(:get_books_from_amazon).and_return(book_array)
self.stub!(:get_books_from_amazon).and_return(book_array)
stub!(:get_books_from_amazon).and_return(book_array)
visit resources_path
save_and_open_page
end
Run Code Online (Sandbox Code Playgroud)
关于问题是什么的任何想法?
我无法生成Heroku将接受secure.mydomain.com的ssl证书.我正在使用DNSimple,Cedar Stack,并按照此处的说明操作:https://devcenter.heroku.com/articles/ssl-certificate
$ curl https://knowledge.rapidssl.com/library/VERISIGN/ALL_OTHER/RapidSSL%20Intermediate/RapidSSL_CA_bundle.pem > rapidssl_bundle.pemcat server.orig.crt rapidssl_bundle.pem > server.crt所以现在我有了server.key和server.orig.crt文件,我尝试将其上传到Heroku $ heroku certs:add server.crt server.key.这给出了错误
Key could not be read since it's protected by a passphrase.
Run Code Online (Sandbox Code Playgroud)
上面的文档没有提到有关从server.key文件中删除密码的任何内容.所以我在这里挖掘并找到了文档:https://devcenter.heroku.com/articles/ssl#customdomain-ssl.我在上面的#1和#2之间运行这些命令:
1B. $ mv server.key server.orig.key
1C. $ openssl rsa -in server.orig.key -out server.key
然而,这给出了错误
unable to load Private Key
47930:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-47/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY
Run Code Online (Sandbox Code Playgroud)
我怀疑这意味着没有找到私钥.
谁知道这里有什么问题?这是Heroku问题还是openssl问题(或DNSimple问题)?
我正试图在http://angular.github.io/protractor/#/上运行普通的Protillactor示例.我已完成所有步骤,但我收到以下错误.
我曾尝试解决这里和这里 有binary: "/Applications/Google\ Chrome.app"和binary: "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome",和没有工作
我不确定我还能配置什么; 它似乎没有用.知道我能做些什么才能让它发挥作用?
编辑 我可以在http:// localhost:4444/wd/hub看到状态,所以不确定问题是使用protractor配置还是使用webdriver-manager.
webdriver-manager出错:
Starting ChromeDriver 2.13.307650 (feffe1dd547ee7b5c16d38784cd0cd679dfd7850) on port 10276
Only local connections are allowed.
15:18:35.760 WARN - Exception thrown
java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37'
System info: host: 'localhost', ip: '127.0.0.1', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.5', java.version: '1.8.0_31'
Driver info: driver.version: unknown
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:175) …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Heroku上显示自定义500错误页面,运行rails 3.2.11
我按照以下步骤操作:https: //devcenter.heroku.com/articles/error-pages
该过程适用于维护页面,但似乎不适用于错误页面.我很肯定在Heroku中S3 URL是正确的,当我直接访问S3 URL时,我可以很好地查看错误页面(它设置为公共).
在production.rb中将config.consider_all_requests_local设置为false
关于为什么Heroku没有展示它的任何想法?我只是在各种浏览器中得到一个空白的屏幕(Chrome说它是500错误,但不呈现页面).
我有工作就好打往非SSL的API的方法,但它给了我,每当我只请求HTTPS的API以下错误响应:
757: unexpected token at '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
Instead use the HTTPS scheme to access this URL, please.<br />
</p>
</body></html>
Run Code Online (Sandbox Code Playgroud)
该方法相当简单:
def my_service_api_call(path = nil, query = nil)
my_service_api_key = ENV["MY_SERVICE_KEY"]
api_path = "#{path}/?api_key=#{my_service_api_key}&#{query}"
url = URI.parse(api_path)
req = Net::HTTP::Get.new(api_path)
res = Net::HTTP.start(url.host, url.port) { |http| …Run Code Online (Sandbox Code Playgroud) heroku ×3
postgresql ×2
rspec ×2
ssl ×2
activerecord ×1
api ×1
cookies ×1
cross-domain ×1
database ×1
dnsimple ×1
helper ×1
iframe ×1
javascript ×1
mocking ×1
omniauth ×1
openssl ×1
protractor ×1
psql ×1
ruby ×1
selenium ×1
session ×1
simple-form ×1
stub ×1