小编Pau*_*aul的帖子

监控完成Sidekiq工作的最佳方法是什么?

在用户首次登录后,我正在使用Sidekiq工作人员完成对Facebook的一些请求.通常,任务大约需要20秒左右.

我想在同步完成后立即使用ajax请求将一些信息加载到页面上,但我不确定使用Javascript检查作业完成的最佳方法.

一种可能性是配置Sidekiq工作程序在其余作业完成后设置cookie.然后我可以使用setTimeout函数在调用load函数之前继续检查cookie.但我不确定这是否是最佳方式.我可以使用Redis吗?

ruby ruby-on-rails sidekiq

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

在Mountain Lion上安装Ruby 1.8.7(10.8)

我在山狮的干净安装上安装Ruby 1.8.7时遇到了很多麻烦.我查看了Stack Overflow并没有看到任何专门解决此问题的内容,并希望有人可能之前遇到过此问题.

我正在使用可以使用Xcode下载的命令行工具

通过RVM和HomeBrew安装Ruby 1.9.3没有任何问题.当我尝试安装1.8.7时,我尝试编译后收到以下消息:

我第一次运行命令

rvm install 1.8.7
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误

The provided compiler '/usr/bin/gcc' is LLVM based, it is not yet fully supported by ruby and gems, please read `rvm requirements`.
Run Code Online (Sandbox Code Playgroud)

挖了一下后我试了一下

rvm install 1.8.7 --with-gcc=clang

Error running 'make ', please read /Users/paulzaich/.rvm/log/ruby-1.8.7-p370/make.log
There has been an error while running make. Halting the installation.
Ruby 'ruby-1.8.7-p370' was built using clang - but it's not (fully) supported, expect errors.
Please be aware that you just installed a ruby that requires …
Run Code Online (Sandbox Code Playgroud)

ruby rvm osx-mountain-lion

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

jQuery $(window).load没有按预期工作

我遇到了一个今天没想到的东西,当我删除以前在我的资产管道中加载的部分函数但需要将其提取到部分A/B测试时.

我正在使用bigVideo.js库在页面上加载全屏视频.当我将代码解压缩到部分时,BigVideo.js今天开始加载错误的维度.部分加载低于我的其他javascript资源.

我以前在我的普通资产管道中的匿名函数中填充了代码.

原始代码(工作)

$(function () {
  (function () {
  var bgVid = new $.BigVideo({useFlashForFirefox: false})
  bgVid.show('http://videourl.com', { ambient : true });
  }();
});
Run Code Online (Sandbox Code Playgroud)

接下来,我尝试设置这个相等的变量,所以我可以在partial中调用它.视频开始加载而不使用正确的尺寸.

$(function () {
  var initVid = function () {
  var bgVid = new $.BigVideo({useFlashForFirefox: false})
  bgVid.show('http://videourl.com', { ambient : true });
  };
Run Code Online (Sandbox Code Playgroud)

部分:

$(function () {
  initVid();
});
Run Code Online (Sandbox Code Playgroud)

它似乎正在发生dom尺寸没有完全加载,所以我尝试将函数切换到这样的东西:

部分:

$(window).load(function () {
  var bgVid = new $.BigVideo({useFlashForFirefox: false});
  bgVid.show('http://videourl.com', { ambient : true });
});
Run Code Online (Sandbox Code Playgroud)

仍然没有运气.

最后,我使用了window.onload

window.onload = function () {
  var bgVid …
Run Code Online (Sandbox Code Playgroud)

javascript jquery ruby-on-rails

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

无法运行rake db:使用Railscast示例在Rails中为Postgresql迁移tsvector GIN索引

我正在关注Ryan Bates 关于在Rails中使用内置的PostgresQL全文搜索的优秀教程.我目前正在使用pg_search gem un-indexed没问题,但我需要提高性能.我正在使用指定了"英语"字典的tsvector.

我正在使用PostgreSQL版本9.1.4

根据Ryan的说明,我使用此代码运行了一个新的迁移,指定了我想要创建的两个新索引.这是架构首先:

create_table "references", :force => true do |t|
  t.string   "title"
  t.string   "type"
  t.datetime "created_at",         :null => false
  t.datetime "updated_at",         :null => false
  t.string   "public_url"
  t.string   "content_type"
  t.integer  "file_size"
  t.text     "overview"
  t.text     "body"
  t.text     "full_text"
  t.integer  "folder_id"
end
Run Code Online (Sandbox Code Playgroud)

我的迁移看起来像这样:

def up
  execute "create index references_title on references using gin(to_tsvector('english', title))"
  execute "create index references_full_text on references using gin(to_tsvector('english', full_text))"
end

def down
  execute "drop index references_title"
  execute "drop index references_full_text"
end
Run Code Online (Sandbox Code Playgroud)

我也继续在application.rb中取消注释:sql选项

config.active_record.schema_format …
Run Code Online (Sandbox Code Playgroud)

postgresql ruby-on-rails pg-search postgresql-9.1

9
推荐指数
1
解决办法
1072
查看次数

使用Phonegap作为Rails 3应用程序的本机容器

我正在考虑将PhoneGap用于iOS应用程序,以便我可以使用相机API.计划是使用Rails来管理整个体验.在这一点上,我并不特别关注表现.如果不是因为需要相机,我会把它设计成一个真正的网络应用程序.

我发现的大多数答案和教程建议使用ajax到后端服务器来呈现前端.在应用程序开发的这一点上,我不确定我是否想在JS中构建如此多的视图,并且更愿意使用Rails来呈现视图.我已经看到一些非常简短的参考,使用PhoneGap作为容器来逐字渲染Rails应用程序.除了性能之外,这是可能的吗?如何在PhoneGap中设置核心html文件以使移动应用程序正常运行?

ruby-on-rails ios cordova

8
推荐指数
1
解决办法
5356
查看次数

在不存在PostgresQL的地方插入多行

我想生成一个单独的SQL查询来批量插入表中不存在的一系列行.我当前的设置为每个记录插入创建了一个新的查询,类似于PostgreSQL中的WHERE NOT EXISTS中详述的解决方案会产生语法错误,但我想将其移动到单个查询以优化性能,因为我当前的设置可能会生成数百个查询一次.现在我正在尝试类似我在下面添加的示例:

INSERT INTO users (first_name, last_name, uid) 
SELECT ( 'John', 'Doe', '3sldkjfksjd'), ( 'Jane', 'Doe', 'adslkejkdsjfds')
WHERE NOT EXISTS (
  SELECT * FROM users WHERE uid IN ('3sldkjfksjd', 'adslkejkdsjfds')
)
Run Code Online (Sandbox Code Playgroud)

Postgres返回以下错误:

PG::Error: ERROR:  INSERT has more target columns than expressions
Run Code Online (Sandbox Code Playgroud)

问题是PostgresQL似乎不想在使用SELECT时获取一系列值.相反,我可以使用VALUES进行插入,但我不能阻止使用WHERE NOT EXISTS生成重复项.

http://www.techonthenet.com/postgresql/insert.php表明在部分示例-使用子选择多个记录,应该是使用SELECT另一个参考表中插入,所以我不知道为什么我似乎无法传递一系列值来插入.我传递的值来自外部API,因此我需要生成要手动插入的值.

postgresql postgresql-9.2

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

Mongoid扩展.ne

第一次在Rails项目上使用Mongoid.扩展.ne在一个范围方法中代表什么,如下所示:

  scope :subscribed, -> {
       where( :unsubscribed.ne => true )
  }
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mongoid ruby-on-rails-3

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

使用Rubber/Capistrano设置环境变量

我需要在橡胶实例启动Web服务器之前以编程方式设置一些环境变量.我在config/rubber/common/rubber.profile文件中设置了环境变量.当我进入实例时,Env变量设置正确,如果我运行Rails控制台,变量将被加载到环境中.但是,web服务器似乎在设置env变量之前加载.由于初始化程序具有空白ENV变量,因此Web服务器上的api失败.如何确保Rubber在启动Web服务器之前设置bash配置文件?

capistrano ruby-on-rails-3 rubber

6
推荐指数
0
解决办法
335
查看次数

为什么array [0]使用jQuery返回与array.first不同的对象,为什么我不能使用.val()?

我正在使用jQuery选择一个输入对象数组,当我尝试在选择其中一个数组元素后将多个方法链接在一起时,我遇到了一个有趣的问题.任何人都可以向我解释为什么我会这样做?

jQuery('.custom-size').first().find('input:hidden')
returns =>  

[<input id=?"custom_order_custom_sizes_attributes_0_size_id" name=?"custom_order[custom_sizes_attributes]?[0]?[size_id]?" type=?"hidden" value=?"138">?
, 
<input name=?"custom_order[custom_sizes_attributes]?[0]?[_destroy]?" type=?"hidden" value=?"0">?
]
Run Code Online (Sandbox Code Playgroud)

如果我选择使用jQuery的元素之一.first().last()再打电话.val(),我得到的预期值"138".

当我尝试使用数组中的位置时,我可以返回数组的元素:

var input = jQuery('.custom-size').first().find('input:hidden')[1]
returns => 
<input name=?"custom_order[custom_sizes_attributes]?[0]?[_destroy]?" type=?"hidden" value=?"0">
Run Code Online (Sandbox Code Playgroud)

但是我不能打电话.val()给这个对象.相反,我收到此错误消息:

TypeError: Object #<HTMLInputElement> has no method 'val'
Run Code Online (Sandbox Code Playgroud)

我可以.slice(x,y)用来返回单个元素,但这看起来很傻.我在这里想念的是什么

javascript jquery

5
推荐指数
2
解决办法
1051
查看次数

如何从Carrierwave Uploader对象引用父模型

我希望在通过Carrierwave完成文件上传后运行一些方法.Carrierwave包括这里详述的几种回调方法.

我打算使用:store回调.

这很好,但它需要我在Uploader对象实例中运行回调方法.这不是世界末日,但我希望将所有逻辑保留在我的父模型中.

我的问题是:我应该如何从上传器引用父模型?我没有在文档中看到任何明显的东西?

我想我可以做点什么

ParentModel.last.call_my_method_here
Run Code Online (Sandbox Code Playgroud)

但这似乎是一种非常脆弱的编码方式(不期待很多请求,但仍然).

ruby rubygems ruby-on-rails ruby-on-rails-3 carrierwave

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

使用Amazon-SDK Ruby gem在Amazon S3上上传文件后更新内容类型

我正在运行一个脚本,在已经上传到S3存储桶后,会更新某些S3对象上的元数据字段.在初始化时,我通过检查文件名来设置内容类型.

def save_to_amazon(file, s3_object, file_name, meta_path)
  puts "uploaded #{file} to Amazon S3"
  content_type = set_content_type(file_name)
    s3_object.write(file.get_input_stream.read, :metadata => { :folders => meta_path}, :content_type => content_type)
end
Run Code Online (Sandbox Code Playgroud)

此时,S3内容类型适用于这些对象.我稍后更新元数据时会出现问题.我运行这样的事情:

s3_object.metadata['folders'] = "some string"
Run Code Online (Sandbox Code Playgroud)

此时,我s3_objects.content_type在更新元数据后运行时返回一个空字符串.

s3_object.content_type = 不可用.

据我所知,在阅读Rdoc时,没有办法在上传S3文件后分配内容类型.我尝试过使用元数据方法

s3.object.metadata['content_type'] = "some string"
s3.object.metadata['content-type'] = "some string"
Run Code Online (Sandbox Code Playgroud)

这两个似乎都分配了一个新的自定义元数据属性,而不是更新对象的mime类型.

有没有办法设置这个,还是我需要再次完全重新上传文件?

ruby amazon-s3

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