Heroku和Rails:Postgres的Gem加载错误,但它在GEMFILE中指定

所以我试图将一个小项目部署到Heroku,但是当我部署它并试图运行heroku run rake db:migrate它返回了我以下错误: rake aborted! Gem::LoadError: Specified ‘postgresql’ for database adapter, but the gem is not loaded. Add `gem ‘pg’` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:177:in `rescue in spec’ /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:174:in `spec’ /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/connection_handling.rb:50:in `establish_connection’ /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/railtie.rb:120:in `block (2 levels) in ‘ /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval’ /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:38:in `execute_hook’ /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:28:in `block […]

使用OpenSSL进行数字签名validation

如何在Ruby中使用OpenSSLvalidationCMS / PKCS#7消息? PKCS#7消息用作用户消息的数字签名,因此我需要签署新的用户消息并validation传入的消息。 我没有在文档和谷歌中找到任何有用的东西。 我发现很少有用于签名的代码示例,但没有用于validation: signed = OpenSSL::PKCS7::sign(crt, key, data, [], OpenSSL::PKCS7::DETACHED)

RubyInstaller 2.2.1和Rails – Rake无法加载Nokogiri

最近我在Windows上安装了Ruby 2.2.1和新的RubyInstaller。 为了检查一切是否正常工作,我进入了一个rails应用程序并运行了bundle install ,运行正常。 但是,当我使用bunle exec rake test运行bunle exec rake test ,我收到以下错误: rake aborted! LoadError: cannot load such file — nokogiri/nokogiri D:/Dev/Grummle/config/application.rb:7:in `’ D:/Dev/Grummle/Rakefile:4:in `’ LoadError: cannot load such file — nokogiri/2.2/nokogiri D:/Dev/Grummle/config/application.rb:7:in `’ D:/Dev/Grummle/Rakefile:4:in `’ (See full trace by running task with –trace) Bundler说这是Using nokogiri 1.6.5 。 此外,rake任务在Ruby 2.1.5中运行良好。 我很欣赏有关如何解决问题的想法。 谢谢! 🙂

Ruby正则表达式匹配url

可能重复: 正则表达式匹配URL 正则表达式删除ruby中url的网页部分 我正在寻找一个正则表达式来解析文件中的所有url。 我尝试了谷歌搜索后获得的许多正则表达式,但在一个或另一个案例中失败了。 我的想法是写一个在begening检查http或https的presense,它将匹配所有内容,直到它看到一个空格。 有任何想法吗 ? 注意:我不需要解析url但删除文件中的所有url或至少使其无法读取。

在设置环境变量时从ruby中取出shell

我需要在为它设置环境变量的同时对一个进程进行shell。 我试过这个单行: system “RBENV_VERSION=system ruby extconf.rb” 此语法适用于shell脚本,但不适用于ruby。 ( 更新:事实certificate这个语法毕竟是来自ruby,但由于我的特殊用例,我没有看到它的效果。) 所以我这样做: rbenv_version = ENV[‘RBENV_VERSION’] ENV[‘RBENV_VERSION’] = ‘system’ begin system “ruby extconf.rb” ensure ENV[‘RBENV_VERSION’] = rbenv_version end 我被迫做了这么长的表达,因为如果它已经有了值,我不想永久地覆盖环境变量。 想到什么更短的东西?

在ruby中创建惯用对象

在ruby中,我经常发现自己编写以下内容: class Foo def initialize(bar, baz) @bar = bar @baz = baz end <> end 甚至 class Foo attr_accessor :bar, :baz def initialize(bar, baz) @bar = bar @baz = baz end <> end 我总是希望尽可能地减少样板 – 所以是否有更惯用的方式在ruby中创建对象?

在Ruby中检测没有getc / get的按键(非阻塞)

我有一个简单的任务,需要等待文件系统上的某些东西改变(它本质上是原型的编译器)。 因此,在检查更改的文件后,我有一个简单的无限循环,睡眠时间为5秒。 loop do # if files changed # process files # and puts result sleep 5 end 而不是Ctrl+C致敬,我宁愿能够测试并查看是否按下了一个键,而没有阻止循环。 基本上我只需要一种方法来判断是否有传入的按键,然后一种方法来获取它们直到满足Q,然后退出程序。 我想要的是: def wait_for_Q key_is_pressed && get_ch == ‘Q’ end loop do # if files changed # process files # and puts result wait_for_Q or sleep 5 end 或者,这是Ruby不做的事情(好)?

Emacs在运行编译命令时忽略了我的路径

我正在尝试使用我的Mac OS X系统上的特定ruby版本运行编译命令(rake cucumber),我使用rvm当前在终端中执行此操作。 我的〜/ .MacOSX / environment.plist中有正确的路径,但是emacs坚持在这条路径上加前一步,因此无用。 我也尝试过: (when (equal system-type ‘darwin) (setenv “PATH” (concat “/Users/fearoffish/.rvm/bin:/Users/fearoffish/.rvm/rubies/ruby-1.8.7-p249/bin:/Users/fearoffish/.rvm/gems/ruby-1.8.7-p249/bin:/Users/fearoffish/.rvm/gems/ruby-1.8.7-p249%global/bin:/Users/fearoffish/.rvm/bin”)) (push “/Users/fearoffish/.rvm/bin” exec-path) (push “/Users/fearoffish/.rvm/rubies/ruby-1.8.7-p249/bin” exec-path) (push “/Users/fearoffish/.rvm/gems/ruby-1.8.7-p249/bin” exec-path) (push “/Users/fearoffish/.rvm/gems/ruby-1.8.7-p249%global/bin” exec-path) (push “/Users/fearoffish/.rvm/bin” exec-path)) 这是emacs初学者的绝望尝试,以获得我想要的东西。 它仍然在它前面,所以我的道路最终是: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/fearoffish/.rvm/bin:/Users/fearoffish/.rvm/rubies/ruby-1.8.7-p249/bin:/Users/fearoffish/.rvm/gems/ruby-1.8.7-p249/bin:/Users/fearoffish/.rvm/gems/ruby-1.8.7-p249%global/bin 我不希望/ usr / bin和其他人在前面,我希望我的路径首先和emacs前置路径到最后,我认为这将解决我的问题。 我通过简单地打开Aquamacs并运行meta-x compile然后echo $PATH 。 有任何想法吗?

立即从控制台获取单个字符

一旦提供了STDIN,是否可以从STDIN中获取每个char(无需等待返回键)?

类/对象悖论混淆

在书中The Well Grounded Rubyist( 摘录 )中,David Black谈到了“Class / Object Chicken-and-Egg Paradox”。 我很难理解整个概念。 有人可以用更好/更容易/类比/其他术语解释它吗? 引用(强调我的): 类Class是它自己的一个实例; 也就是说,它是一个Class对象。 而且还有更多。 还记得class级Object吗? 好吧, Object是一个类……但是类是对象。 所以, Object是一个对象。 而Class是一个class级。 而Object是一个类, Class是一个对象。 哪个先来? 除非类Object已存在,否则如何创建类Class ? 但是,如果有一个类Class可以有实例,那么怎么会有一个类Object (或任何其他类)呢? 至少就目前而言,解决这一悖论的最佳方法是忽略它。 为了让类和对象系统运行起来,Ruby必须做一些鸡蛋或鸡蛋的东西 – 然后,循环和悖论并不重要。 在编程过程中,您只需要知道类是对象,类的实例称为Class 。 (如果你想简要地知道它是如何工作的,就像这样:每个对象都有一个内部记录,它是一个实例的类,而对象Class里面的内部记录指向Class 。)