小编Tom*_*chi的帖子

postgres hstore存在且不存在于同一时间

我在远程服务器上设置了一个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)

postgresql ruby-on-rails postgresql-9.1

15
推荐指数
2
解决办法
9947
查看次数

memstats struct中的哪些字段仅指堆,只指堆栈

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)

go

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

Redis的环境变量

我有一个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)

ruby-on-rails redis sidekiq

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

延迟发送电子邮件

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-on-rails sidekiq

4
推荐指数
1
解决办法
4181
查看次数

无法运行服务器或捆绑更新

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)

ruby-on-rails

2
推荐指数
1
解决办法
2084
查看次数

标签 统计

ruby-on-rails ×4

sidekiq ×2

go ×1

postgresql ×1

postgresql-9.1 ×1

redis ×1