我在远程服务器上设置了一个Rails应用程序并创建了一个hstore扩展
sudo -u postgres psql
CREATE EXTENSION hstore;
Run Code Online (Sandbox Code Playgroud)
然后,我在其中一个postgres表中部署了一个使用hstore的应用程序的迭代,但是当它运行迁移时,它给出了一条错误消息
PG::UndefinedObject: ERROR: type "hstore" does not exist
Run Code Online (Sandbox Code Playgroud)
然后我再次尝试这样做
sudo -u postgres psql
CREATE EXTENSION hstore;
Run Code Online (Sandbox Code Playgroud)
但它告诉我hstore已经存在
ERROR: extension "hstore" already exists
Run Code Online (Sandbox Code Playgroud)
这圈继续.
知道可能导致这个问题的原因是什么?我在Ubuntu 12.04服务器上使用postgres 9.1
更新 注意,想知道这个问题是否与权限有关,我试图检查我的权限,但是得到了以下错误
sudo -u postgres psql -U username
psql: FATAL: Peer authentication failed for user "username"
Run Code Online (Sandbox Code Playgroud)
更新 虽然安装了hstore,但它不是我正在使用的数据库的扩展.如何在特定的数据库中安装它?
psql -d db_production -c '\dx'
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Run Code Online (Sandbox Code Playgroud) Go运行时有很多与堆和堆栈相关的不同变量,一些堆栈号是堆号的一部分,导致混乱(对我来说).例如,在此链接中.它说
// Stack numbers are part of the heap numbers, separate those out for user consumption
stats.StackSys = stats.StackInuse
stats.HeapInuse -= stats.StackInuse
stats.HeapSys -= stats.StackInuse
Run Code Online (Sandbox Code Playgroud)
在运行时文档(下面的摘录)中,它提供了7个不同的堆相关字段(即memstat结构的字段),但没有明确说明哪些包含堆栈,类似地,哪些堆栈字段包含在堆中,以及它们与总分配.
这是一个问题,因为我想比较堆与堆栈,但我不想选择包含堆栈的堆变量(显然).
问题1).总分配字段是包含堆,堆栈还是两者?2)哪些堆字段不包含数字堆栈?3)哪些堆字段包含堆栈的数字?4)哪些堆栈字段不包含堆的数字?
Alloc uint64 // bytes allocated and still in use
TotalAlloc uint64 // bytes allocated (even if freed)
Sys uint64 // bytes obtained from system (sum of XxxSys below)
Lookups uint64 // number of pointer lookups
Mallocs uint64 // number of mallocs
Frees uint64 // number of frees
// …Run Code Online (Sandbox Code Playgroud) 我有一个Rails应用程序,可以使用Gmail发送电子邮件通知(目前它只在开发模式下).我用这样的环境变量设置用户名和密码
GMAIL_USERNAME='me@gmail.com' GMAIL_PASSWORD='mygreatpassword' rails s
Run Code Online (Sandbox Code Playgroud)
一切正常.但是,在我添加sidekiq/redis以便将电子邮件作为后台作业发送后,我在尝试发送电子邮件时收到身份验证错误.
2013-04-24T19:26:45Z 887 TID-ovdxl6qxs WARN: {"retry"=>true, "queue"=>"default", "timeout"=>30, "class"=>"Sidekiq::Extensions::DelayedMailer", "args"=>["---\n- !ruby/class 'Notifier'\n- :answer_updated\n- - !ruby/object:Answer\n attributes:\n id: 32\n content: Billy\n accepted: \n user_id: 37\n question_id: 38\n created_at: 2013-04-24 19:26:44.948753000 Z\n updated_at: 2013-04-24 19:26:44.948753000 Z\n - !ruby/object:User\n attributes:\n id: 35\n email: emailaddress@gmail.com\n encrypted_password: $2a$10$5XLIJ6F1KNPOjbTUX3fqROE0oDHgf/WnSGE4OhCm7g.pzN1bzLS0q\n reset_password_token: \n reset_password_sent_at: \n remember_created_at: 2013-04-19 19:28:52.926838000 Z\n sign_in_count: 9\n current_sign_in_at: 2013-04-24 19:17:31.694245000 Z\n last_sign_in_at: 2013-04-22 18:24:29.946303000 Z\n current_sign_in_ip: 127.0.0.1\n last_sign_in_ip: 127.0.0.1\n created_at: 2013-04-18 19:28:09.569895000 Z\n updated_at: 2013-04-24 19:17:31.695692000 Z\n name: emailaddress@gmail.com\n …Run Code Online (Sandbox Code Playgroud) 我AnswerObserver < ActiveRecord::Observer在我的Rails应用程序中有以下代码.创建答案后,会向发送问题的用户发送电子邮件.
def after_create(answer)
answer.question.watchers.each do |user|
Notifier.answer_updated(answer, user).deliver
end
Run Code Online (Sandbox Code Playgroud)
Notifier继承自ActionMailer class Notifier < ActionMailer::Base并具有该方法
def answer_updated(answer, user)
@answer = answer
@user = user
mail(:to => user.email,
:subject => "Your question has been answered")
end
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试使用SideKiq将其移至后台进程.我安装并运行了redis,并成功启动了sidekiq bundle exec sidekiq.
根据这篇博文http://blog.remarkablelabs.com/2013/01/using-sidekiq-to-send-emails-asynchronously,SideKiq内置了对ActionMailer的支持
The method that you will likely use the most is .delay. Calling .delay from an Action Mailer will result in the email being added to the DelayedMailer queue for processing.
Run Code Online (Sandbox Code Playgroud)
因此,我在调用动作邮件程序方法answer_updated的观察者中用'delay'替换了"deliver"方法,就像这样
def after_create(answer) …Run Code Online (Sandbox Code Playgroud) Ruby和Rails在我的Mac上运行良好,但我突然遇到了一些问题.当我尝试运行服务器或生成模型(即无论如何使用'rails'命令)时,我收到此错误
/Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/rubygems_integration.rb:187:in `stub_source_index170': uninitialized constant Gem::SourceIndex (NameError)
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/rubygems_integration.rb:353:in `stub_rubygems'
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/rubygems_integration.rb:250:in `replace_entrypoints'
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/runtime.rb:14:in `setup'
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/bundler-1.2.3/lib/bundler.rb:116:in `setup'
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/setup.rb:7:in `<top (required)>'
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:110:in `require'
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:110:in `rescue in require'
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:35:in `require'
from /Users/tm/Sites/anwaltythree/config/boot.rb:6:in `<top (required)>'
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require'
from /Users/tm/.rbenv/versions/1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require'
from script/rails:5:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我随机尝试运行bundle update并得到此错误
Fetching gem metadata from https://rubygems.org/..
NoMethodError: private method `open' called for Gem::Package:Class
An error occurred while installing rake (10.0.4), and Bundler cannot continue.
Make sure that `gem install rake -v '10.0.4'` …Run Code Online (Sandbox Code Playgroud)