标签: ruby

Rails:在lib目录中记录代码?

为lib目录中保存的代码配置日志记录的最佳/最简单方法是什么?

ruby logging ruby-on-rails

37
推荐指数
2
解决办法
8912
查看次数

构建红宝石宝石的现代方法是什么?

随着Bundler的发布,变化有多大?是否有可用作基础的模板?什么是最佳做法?

ruby rubygems

37
推荐指数
4
解决办法
9181
查看次数

为什么我们要在Ruby中的类中放置一个模块?

在Ruby中,我发现为了命名空间而将类放在模块中会很有用.我也看到可以将模块放在类中.但我不明白你为什么那样做.

模块通常混合成类,对吧?那么,在类中定义模块的目的是什么?

ruby namespaces

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

RSpec模拟对象示例

我是模拟对象的新手,我正在尝试学习如何在RSpec中使用它们.有人可以发布一个示例(一个hello RSpec Mock对象世界类型示例),或者关于如何使用RSpec模拟对象API的链接(或任何其他参考)?

ruby unit-testing rspec rspec-mocks

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

用胡子迭代数组

如何获取迭代中当前元素的引用?

{{#my_array}}
    <p>{{__what_goes_here?__}}</p>
{{/my_array}}
Run Code Online (Sandbox Code Playgroud)

我希望我只是忽略了显而易见的事实.

ruby mustache

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

Ruby中的STDIN和$ stdin有什么区别?

Ruby有两种引用标准输入的方法:STDIN常量和$stdin全局变量.

除了我可以分配一个不同的IO对象,$stdin因为它不是一个常量(例如在我的孩子中重新定向IO之前),STDIN和之间的区别是$stdin什么?我什么时候应该在我的代码中使用每个?

如果我重新分配$stdin,它会影响STDIN吗?

这也适用于STDOUT/ $stdoutSTDER/ $stderr

ruby stdin

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

如何为rspec运行单一测试?

当我的文件发生变化时,我使用guard-rspec自动运行必要的rspec测试,我喜欢它的工作原理.但是,当我调试具有多个测试的文件时,有时我只想重新运行单个测试.例如,使用命令行中的rspec:

rspec spec/requests/my_favorite_spec.rb:100
Run Code Online (Sandbox Code Playgroud)

这将只运行第100行的单一规格my_favorite_spec.rb.

我尝试将上述内容输入到防护控制台,但它只是运行所有测试,就像我刚按下回车一样.防护控制台中是否有另一种语法来运行单个规范?

ruby rspec ruby-on-rails guard

37
推荐指数
1
解决办法
8888
查看次数

异步发送邮件时"SSL_read:cert已在哈希表中"

我不断收到OpenSSL::SSL::SSLError一条消息,说明SSL_read: cert already in hash table何时与ActionMailer异步发送延迟的电子邮件.

我们使用Sidekiq以异步方式发送所有电子邮件.当在Sidekiq GitHub回购中将此问题作为问题提出时,我被告知Sidekiq对SSL连接一无所知或管理SSL连接.

我们的应用程序托管在正在运行的Heroku上OpenSSL 0.9.8k 25 Mar 2009.

我们在其他工作中已经多次看到这个错误,并且发现有时候工作会得到处理,但有时他们却没有.

这是一个OpenSSL线程问题,其中多个Sidekiq线程试图使用相同的SSL连接?有没有解决这个问题?

这是我们得到的堆栈跟踪:

    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/openssl/buffering.rb:175:in `sysread_nonblock`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/openssl/buffering.rb:175:in `read_nonblock`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/protocol.rb:153:in `rbuf_fill`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/protocol.rb:144:in `readline`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/smtp.rb:932:in `recv_response`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/smtp.rb:903:in `block in data`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/smtp.rb:942:in `critical`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/smtp.rb:896:in `data`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/smtp.rb:663:in `block in send_message`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/smtp.rb:852:in `rcptto_list`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/smtp.rb:663:in `send_message`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:113:in `block in deliver!`
    [PROJECT_ROOT]/vendor/ruby-2.0.0/lib/ruby/2.0.0/net/smtp.rb:521:in `start`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/mail-2.5.4/lib/mail/message.rb:2129:in `do_delivery`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/mail-2.5.4/lib/mail/message.rb:232:in `block in deliver`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/actionmailer-4.0.3/lib/action_mailer/base.rb:456:in `block in deliver_mail`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.3/lib/active_support/notifications.rb:159:in `block in instrument`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.3/lib/active_support/notifications/instrumenter.rb:20:in `instrument`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.3/lib/active_support/notifications.rb:159:in `instrument`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/actionmailer-4.0.3/lib/action_mailer/base.rb:454:in `deliver_mail`
    [PROJECT_ROOT]/vendor/bundle/ruby/2.0.0/gems/mail-2.5.4/lib/mail/message.rb:232:in `deliver` …
Run Code Online (Sandbox Code Playgroud)

ruby openssl ruby-on-rails heroku sidekiq

37
推荐指数
1
解决办法
1374
查看次数

未定义的方法'设计'为用户

我一直在寻求掌握设计及其运作方式,并且在第一道障碍时有点堕落.我已经看了几个地方,但似乎无法找到有这个错误的人.

所以我创建了一个带索引视图的简单Home控制器并添加了root'home #index',并确保在development.rb文件中设置了默认的url选项.然后我输入:

rails generate devise User
Run Code Online (Sandbox Code Playgroud)

这在模型中创建了我的user.rb文件,其中包含以下内容:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end
Run Code Online (Sandbox Code Playgroud)

到目前为止非常简单,我有以下Gemfile:

source 'https://rubygems.org'
gem 'rails', '4.0.5'
gem 'sqlite3'
gem 'sass-rails', '~> 4.0.2'
gem 'devise'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
group :doc do
  gem 'sdoc', require: false
end
gem 'bcrypt'
Run Code Online (Sandbox Code Playgroud)

当我运行rake db:migrate时,我收到以下错误:

rake aborted!
NoMethodError: undefined …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails devise

37
推荐指数
6
解决办法
4万
查看次数

当我将参数传递给我的脚本时,使用gets()给出"没有这样的文件或目录"错误

嗨我正在制作一个简单的ruby脚本,在我使用gets.chomp和参数创建表单时,问题是当gets.chomp我使用脚本时,在应用参数时返回错误test.

代码:

#!usr/bin/ruby

def formulario(quien)
    while (1)
        print "[+] Word : "
        word = gets.chomp
        print quien + " -> " + word
    end
end

quien = ARGV[0]

formulario(quien)
Run Code Online (Sandbox Code Playgroud)

错误:

[+] Word : C:/Users/test/test.rb:8:in `gets': No such file or directory @ rb_sysopen - test (Errno::E
NOENT)
        from C:/Users/test/test.rb:8:in `gets'
        from C:/Users/test/test.rb:8:in `formulario'
        from C:/Users/test/test.rb:17:in `<main>'
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

ruby

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