在我们的rails 3.1.4 app中,rspec用于测试require_signin应用程序控制器中的公共方法.这是方法require_signin:
def require_signin
if !signed_in?
flash.now.alert = "Log in first!"
redirect_to signin_path
end
end
Run Code Online (Sandbox Code Playgroud)
这是rspec代码:
it "should invoke require_signin for those without login" do
controller.send(:require_signin)
controller {should redirect_to signin_path}
end
Run Code Online (Sandbox Code Playgroud)
上面会rspec生成巨大的多页错误,如下所示:
RuntimeError:?[0m
?[31mActionController::RackDelegation#status= delegated to @_response.status=, but @_response is nil: #<ApplicationController:0x3
a67f10 @_routes=nil, @_action_has_layout=true, @_view_context_class=nil, @_headers={"Content-Type"=>"text/html"}, @_status=200, @_reques
t=#<ActionController::TestRequest:0x3a68720 @env={"rack.version"=>[1, 1], "rack.input"=>#<StringIO:0x34fad60>, ........
Run Code Online (Sandbox Code Playgroud)
可能是什么错误的rspec代码?非常感谢.
将两个div放在同一行上是一个老问题.但是在rails中使用simple_form时我找不到解决方案.我想要做的是在同一行显示内容及其标签.标签的宽度为125px(.left),内容位于右侧(.right).标签中的文本与右侧对齐,内容中的文本与左侧对齐.
这是HTML:
<form id="new_production" class="simple_form new_production" novalidate="novalidate" method="post" action="/projects/1/productions" accept-charset="UTF-8">
<div style="margin:0;padding:0;display:inline">
<input type="hidden" value="?" name="utf8">
<input type="hidden" value="2UQCUU+tKiKKtEiDtLLNeDrfBDoHTUmz5Sl9+JRVjALat3hFM=" name="authenticity_token">
</div>
<div class="left">Proj Name?</div>
<div class="right">must have a name</div>
<div class="input string required">
Run Code Online (Sandbox Code Playgroud)
这是CSS:
.simple_form div.left {
float: left;
width: 125px;
text-align: right;
margin: 2px 10px;
display: inline;
}
.simple_form div.right {
float: left;
text-align: left;
margin: 2px 10px;
display: inline;
}
Run Code Online (Sandbox Code Playgroud)
但是,在结果中,有一个换行符,如下所示:
Proj Name?
must have a name
Run Code Online (Sandbox Code Playgroud)
简单形式的erb代码是:
<div class="left">Proj Name?</div><div class="right"><%= @project.name %></div> …Run Code Online (Sandbox Code Playgroud) 这是string需要转换成一个hash.
"{:status => {:label => 'Status', :collection => return_misc_definitions('project_status') } }"
Run Code Online (Sandbox Code Playgroud)
我们无法使用eval因为eval会return_misc_definitions('project_status')在字符串中执行该方法.是否有纯字符串操作来完成ruby/rails中的这种转换?感谢帮助.
我们的Rails 3.2.12应用程序托管在子目录下/nbhy.在routes.rb为(唯一相关的):
root :to => "authentify::sessions#new"
match '/signin', :to => 'authentify::sessions#new'
match '/signout', :to => 'authentify::sessions#destroy'
Run Code Online (Sandbox Code Playgroud)
这authentify是处理用户身份验证的rails引擎.这是routes.rb引擎中的authentify:
resource :session
root :to => 'sessions#new'
match '/signin', :to => 'sessions#new'
match '/signout', :to => 'sessions#destroy'
Run Code Online (Sandbox Code Playgroud)
要登录,我们必须使用以下链接:
http://mysite.com/nbhy/authentify/session/new
Run Code Online (Sandbox Code Playgroud)
但是这个链接太长而且不容易记住.如果我们登录:
http://mysite.com/nbhy
Run Code Online (Sandbox Code Playgroud)
系统将抛出错误404 Not Found并将页面重定向到:
http://mysite.com/authentify/session
Run Code Online (Sandbox Code Playgroud)
问题是应用程序正在重定向/authentify/session无法找到的登录请求(缺少nbhy).为什么缺少nbhy,我们如何将其放回url中以便用户可以登录http://mysite.com/nbhy?
下面是nginx config对ubuntu 12.04 server的sub uri:
server {
listen 80;
server_name mysite.com;
root /var/www/;
passenger_enabled on;
rails_env production;
passenger_base_uri …Run Code Online (Sandbox Code Playgroud) 经过几次删除和插入后,我们的 sqlite3 从 300K 膨胀到超过 4MB。在 Firefox sqlite3 管理器中,我们打开数据库并压缩它。没有尺寸变化。然后我们将 db 文件移动到响应 sqlite3 命令的服务器。我们做到了(以下帖子(由 Lars Windolf)在 VACUUM 上):
$sqlite3 /path/to/db/mydb.sqlite3 "VACUUM;"
Run Code Online (Sandbox Code Playgroud)
然而,尺寸根本没有减小。我们的想法已经用完了。sqlite3压缩的有效方法是什么?
我有一个生产服务器运行ubuntu 14.04, Rails 4.2.0, postgresql 9.6.1gem pg 0.21.0/0.20.0。在过去的几天里,有不断的错误与访问的表customer_input_datax_records在psql server。
D, [2017-07-20T18:08:39.166897 #1244] DEBUG -- : CustomerInputDatax::Record Load (0.1ms) SELECT "customer_input_datax_records".* FROM "customer_input_datax_records" WHERE ("customer_input_datax_records"."status" != $1) [["status", "email_sent"]]
E, [2017-07-20T18:08:39.166990 #1244] ERROR -- : PG::UnableToSend: no connection to the server
: SELECT "customer_input_datax_records".* FROM "customer_input_datax_records" WHERE ("customer_input_datax_records"."status" != $1)
Run Code Online (Sandbox Code Playgroud)
调用访问数据库服务器的代码是Rufus scheduler 3.4.2循环的:
s = Rufus::Scheduler.singleton
s.every '2m' do
new_signups = CustomerInputDatax::Record.where.not(:status => 'email_sent').all
.......
end
Run Code Online (Sandbox Code Playgroud)
重启服务器后,通常会有第一个请求(或几个)。但是一段时间后(例如 1 或 2 …
这是一个retrieve_email.js连接到我的 gmail 帐户并UNSEEN在某个日期后下载电子邮件的模块。该代码几乎是从[imap模块的示例] 1 中复制的。
const Imap = require('imap');
const inspect = require('util').inspect;
const simpleParser = require('mailparser').simpleParser;
const imap = new Imap({
user: 'mygmail@gmail.com',
password: 'mypassword',
host: 'imap.gmail.com',
port: 993,
tls: true
});
function openInbox(callback) {
imap.openBox('INBOX', true, callback);
};
async function parse_email(body) {
let parsed = simpleParser(body);
...............
};
module.exports = function() {
imap.once('ready', function() {
openInbox(function(err, box) {
if (error) throw err;
imap.search(['UNSEEN', ['SINCE', 'May 20, 2018']], function(err, results){
if (err) …Run Code Online (Sandbox Code Playgroud) ubuntu 20.x这是我用来为 JOSE/NODEJS (14.16) 应用程序生成 EdDSA 25519 密钥对的命令:
$ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id-ed25519 -C myemail_address
Run Code Online (Sandbox Code Playgroud)
这是生成的私钥:
-----BEGIN OPENSSH PRIVATE KEY-----
a3BlbnNzaC1rZXktdjEAAAAABG5vbmVAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAp92w+fwodL4kaUDrNghdZScdcg54IJOO6tLpG91oeKgAAAJj71Y9w+9WP
cAAAAAtzc2gtZWQyNTUxOQAAACAp92w+awodL4kaUDrNghdZScdcg54IJOO6tLpG91oeKg
AAAEDsEfbdyx4HaM5cL1f2Ag2Knb0NDCIiuIDsm6FwR5NJESn3bD5/Ch0viRpQOs2CF1lJ
c1yDnggk47q0ukb3Wh4qAAAAFGVtY2yhYjIwMTFAZ21haWwuY29tAQ==
-----END OPENSSH PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
私钥有 366 字节而不是 32 字节。
这是公钥:
BAAAC3NzaC1lZ1I1NTE5AAAAICn3CD5/Ch0viRpQOs2CF1lJx1yDnggk47q0ukb3Wh4q myemail_address
Run Code Online (Sandbox Code Playgroud)
不包括电子邮件地址的话,它有 63 字节,看起来太长了。
这是为 EdDSA 25519 生成密钥对的正确方法吗?如果不是,正确的方法是什么?
这是一个与导轨3.2.12中的水豚集成测试案例.click_link 'New Log'是一个ajax电话.然而,打开的页面以$()开头,并有一堆js转义,如\n和\ log-log.
it "should work with link on show customer_comm_record page" do
visit customer_customer_comm_records_path(@cust)
#visit customer_customer_comm_record_path(@cust, @crecord)
click_link @crecord.id.to_s
click_link 'New Log'
save_and_open_page
end
Run Code Online (Sandbox Code Playgroud)
我们还尝试用这个案例包装describe "", :js => true do,如何有错误说
`An error occurred in an after hook ActiveRecord::StatementInvalid: SQLite3::BusyException: database is locked:`
Run Code Online (Sandbox Code Playgroud)
代码执行没有错误.rspec案有什么问题?感谢帮助.
我们正在寻找删除Rails中多个记录的命令transaction.为了使内触发transaction,我们使用destroy_all!和delete_all!并收到method not defined错误.在Rails事务中触发的多个记录的正确删除命令(或正确的方法)是什么?