小编use*_*363的帖子

RunTimeError:ActionController :: RackDelegation在rspec 2.10.1中用于rails 3.1.4应用程序控制器

在我们的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代码?非常感谢.

ruby ruby-on-rails http rspec2 ruby-on-rails-3.1

8
推荐指数
1
解决办法
4718
查看次数

如何在rails中的simple_form中使用CSS将两个div放在同一行?

将两个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)

html css ruby-on-rails erb simple-form

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

如何在不使用eval的情况下将字符串转换为ruby/rails中的哈希?

这是string需要转换成一个hash.

"{:status => {:label => 'Status', :collection => return_misc_definitions('project_status') } }"
Run Code Online (Sandbox Code Playgroud)

我们无法使用eval因为evalreturn_misc_definitions('project_status')在字符串中执行该方法.是否有纯字符串操作来完成ruby/rails中的这种转换?感谢帮助.

ruby string hash ruby-on-rails

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

如何使用sub uri使用passenger/nginx登录rails 3.2.12

我们的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 configubuntu 12.04 serversub 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)

routes ruby-on-rails ruby-on-rails-3

7
推荐指数
1
解决办法
418
查看次数

压缩 sqlite3 数据库的有效方法是什么?

经过几次删除和插入后,我们的 sqlite3 从 300K 膨胀到超过 4MB。在 Firefox sqlite3 管理器中,我们打开数据库并压缩它。没有尺寸变化。然后我们将 db 文件移动到响应 sqlite3 命令的服务器。我们做到了(以下帖子(由 Lars Windolf)在 VACUUM 上):

$sqlite3 /path/to/db/mydb.sqlite3 "VACUUM;"
Run Code Online (Sandbox Code Playgroud)

然而,尺寸根本没有减小。我们的想法已经用完了。sqlite3压缩的有效方法是什么?

sqlite

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

PG::UnableToSend: 在 Rails 中没有连接到服务器

我有一个生产服务器运行ubuntu 14.04, Rails 4.2.0, postgresql 9.6.1gem pg 0.21.0/0.20.0。在过去的几天里,有不断的错误与访问的表customer_input_datax_recordspsql 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 …

postgresql ruby-on-rails pg

7
推荐指数
1
解决办法
7717
查看次数

使用 node-imap 检索电子邮件

这是一个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)

imap node.js node-imap

7
推荐指数
1
解决办法
9513
查看次数

为 JOSE/NODEJS 生成 EdDSA 25519 密钥对

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 生成密钥对的正确方法吗?如果不是,正确的方法是什么?

jwt jose

7
推荐指数
1
解决办法
3935
查看次数

使用rails 3.2.12进行ajax调用的capybara集成测试错误

这是一个与导轨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案有什么问题?感谢帮助.

rspec capybara ruby-on-rails-3

6
推荐指数
1
解决办法
2213
查看次数

有没有destroy_all!/ delete_all!在Rails?

我们正在寻找删除Rails中多个记录的命令transaction.为了使内触发transaction,我们使用destroy_all!delete_all!并收到method not defined错误.在Rails事务中触发的多个记录的正确删除命令(或正确的方法)是什么?

ruby-on-rails-4

6
推荐指数
1
解决办法
4260
查看次数