我如何获得模型的方法名称数组?

Rails / Ruby中是否有可能获取模型方法的列表。 FE。 ModelName.methods 我想获得属于Mailer模型的所有方法名称。

如何为开发和生产指定不同版本的gem

我需要有不同版本的gem用于开发和生产,所以我将以下内容放在我的gemfile中。 group :development, :test do gem ‘rspec-rails’, ‘2.11.0’ gem ‘bcrypt-ruby’, ‘3.1.2’ end group :production do gem ‘rails_12factor’ gem ‘bcrypt-ruby’, ‘3.0.1’ end 但如果我尝试bundle install甚至只是rails console我得到上述错误 我试过了 bundle install –without production 但我仍然收到错误消息。 仅供参考:我需要这样做,因为我要通过rails教程,在windows,ruby 2.0.0和bcrypt以及Heroku之间出现冲突,所以我在windows上使用bcrypt 3.1.2(对活动进行了修改)在Heroku上记录gemfile)和bcrypt 3.0.1。 有关更多详细信息,请参阅此内容: 在Windows上使用带有ruby2.0的bcrypt 3.0.1的问题 我基本上完成了第一个答案中提到的内容 编辑 ################################################################### 正如下面的答案所指出的,我真的应该在生产和开发中使用相同的版本(即使我只是在教程中工作)。 我最终做的是猴子修补ActiveModel使用 gem ‘bcrypt-ruby’, ‘3.1.2’ 而不是 gem ‘bcrypt-ruby’, ‘~> 3.0.0’ 在secure_password中。 我通过将以下内容放在lib / secure_password_using_3_1_2.rb中来完成此操作 module […]

Ruby – 是否可以将方法别名为安全导航操作符

Ruby 2.3引入了安全导航操作符,但是我发现它的语法过于离散,在短暂扫描代码时很容易错过。 相反,我更喜欢try的语法,因为它看起来更加明显和有意。 所以我的问题是在Ruby 2.3+中,有没有办法将别名或猴子方法修补到安全导航操作符&. 自定义方法名称即。 s.fast_try(:upcase!).fast_try(:downcase)而不是写s&.upcase!&.downcase 主要思想是尝试提高性能而不是其他实现,例如try方法。 不,我不关心尝试和安全导航操作员之间的微小行为差异。 另外,如果无法避免,我不介意一些模糊的论证限制,只是指出它们。

在ruby中读取/写入受密码保护和加密的文件

我想加密ruby程序将从中加载数据的文件。 另外,我需要程序在启动时提示输入密码,用于解密文件。 换句话说,该文件需要在机器上加密,只有拥有密码的用户才能运行该应用程序。 我已经开始关注openpgp,但据我了解,这仍然无法解决密码问题。

rails app的出生日期正则表达式yyyy-mm-dd

我正在创建一个用户注册表单,我将生日期添加到必填字段。 我已经搜索了谷歌,github和stackoverflow的出生日期(日期)正则表达式,并发现这个: user.rb DateRegex = /^\d{4}-\d{2}-\d{2}/ validates_format_of :date_of_birth, :with => DateRegex new.html.erb (我知道这会允许一些虚假的出生日期,但我不想在此时安装任何类似validation时效性的内容。) 但是,在测试出生日期时,它似乎并没有强制执行正则表达式中的4-2-2。 它允许2-2-2有时,2-4-2,2-2-4,它允许连字符和斜线…请帮助吗? 另外,如果有必要,如何使用3个文本字段并将其输入一个mysql date_of_birth列?

Ruby Net :: SSH使用变量插值更改目录

我对Ruby很新,所以如果我遗漏了一些明显的东西,请原谅我。 问题是Ruby似乎没有在Net :: SSH.exec中进行变量插值! 方法。 VCL_DIR = “/usr/local/etc/varnish/” host = ‘0.0.0.0’ Net::SSH.start(host, ‘root’) do |ssh| puts “Changing directories to #{VCL_DIR}” ssh.exec!(“cd #{VCL_DIR}”) res = ssh.exec!(“pwd”) puts “Server reports current directory as #{res}” end 输出: Changing directories to /usr/local/etc/varnish/ Server reports current directory as /root 任何帮助表示赞赏。 使用Ruby 1.9.3p194

您的Ruby版本是2.3.0,但您的Gemfile指定为2.1.2

我正在尝试设置现有项目,在运行bundle install ,我遇到了以下错误。 我已经尝试了很多可能的解决方案,但没有为我工作,我也运行建议的命令,如gem pristine bcrypt –version 3.1.10但不适合我。 bipashant@bipashant-Inspiron-5537:~/sanokam$ bundle install Ignoring bcrypt-3.1.10 because its extensions are not built. Try: gem pristine bcrypt –version 3.1.10 Ignoring curb-0.9.3 because its extensions are not built. Try: gem pristine curb –version 0.9.3 Ignoring debug_inspector-0.0.2 because its extensions are not built. Try: gem pristine debug_inspector –version 0.0.2 Ignoring eventmachine-1.0.3 […]

Heroku上的Ruby守护进程

我正在尝试在Heroku上执行ruby守护程序无框架应用程序,但在尝试执行worker之后崩溃: heroku[worker.1]: State changed from crashed to starting heroku[worker.1]: Starting process with command `bundle exec rake twitter:start` heroku[worker.1]: State changed from starting to up heroku[worker.1]: Process exited with status 0 heroku[worker.1]: State changed from up to crashed 该应用程序基本上通过一堆API收集数据,并将其保存在远程MongoHQ实例上。 佣金任务是: dir_path = File.expand_path(‘../’, __FILE__) namespace :twitter do desc ‘Start Twitter daemon’ task :start do exec “#{dir_path}/bin/autana […]

Resque:从另一个作业中调用#perform_later不会触发其他作业

我有一个问题,很可能是我做了一些奇怪的事情,但我不能为我的生活弄清楚: 我有一份父母工作,应该开始一堆子工作,但那些子工作永远不会执行。 这是父工作: class TriggerJob < ApplicationJob def perform start_events end around_perform do |_, block| p 'TriggerJob before_perform' block.call p 'TriggerJob after_perform' end private def start_events events = Events.all events.each do |event| event.connectors.each do |connector| p "Stopping connector #{connector.id} for event #{event.id}" StopConnectorJob.perform_later(connector.id) end end end end 这是孩子的工作: class StopConnectorJob < ApplicationJob @queue = :default […]

ror – 在has_many和belongs_to的两端包含外键?

我inheritance的代码有: class Graphic ‘asset_id’, :conditions => ‘asset_type_id = 5’, :order => ‘created_at’, :dependent => :destroy class Comment :asset_id 在我看来,像has_many不应该有foreign_key(它在belongs_to中被引用,我相信)但我不确定,你知道吗? 也就是说 class Graphic ‘asset_type_id = 5’, :order => ‘created_at’, :dependent => :destroy class Comment :asset_id