小编Avi*_*hai的帖子

在Rails中的一个ActiveRecord事务中更新多个记录

如何使用Rails中的事务块一次更新/保存模型的多个实例?

我想更新数百条记录的值; 每条记录的值都不同.这不是一个属性的批量更新情况.Model.update_all(attr:value)在这里不合适.

MyModel.transaction do
    things_to_update.each do |thing|
        thing.score = rand(100) + rand(100)
        thing.save
    end
end
Run Code Online (Sandbox Code Playgroud)

save似乎发布它自己的事务,而不是将更新批处理到周围的事务中.我希望所有更新都进入一次重大交易.

我怎么能做到这一点?

ruby postgresql activerecord transactions ruby-on-rails

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

奇怪的node.js错误:TypeError:对象#<Object>没有方法'on'

我正在尝试在node.js中运行一个简单的屏幕抓取应用程序.代码发布在这里:https : //github.com/anismiles/jsdom-based-screen-scraper http://anismiles.wordpress.com/2010/11/29/node-js-and-jquery-to-scrape -websites /

服务器启动正常,但是当我对它运行查询时,我收到以下错误.有谁知道那是为什么?

TypeError: Object #<Object> has no method 'on'
    at Object.<anonymous> (/Users/avishai/Downloads/anismiles-jsdom-based-screen-scraper-f0c79d3/searcher-server.js:9:10)
    at param (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21)
    at param (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:157:15)
    at pass (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:162:10)
    at Object.router [as handle] (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:168:6)
    at next (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/index.js:218:15)
    at Server.handle (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/index.js:231:3)
    at Server.emit (events.js:45:17)
    at HTTPParser.onIncoming (http.js:1078:12)
    at HTTPParser.onHeadersComplete (http.js:87:31)
Run Code Online (Sandbox Code Playgroud)

似乎抛出错误的函数是:

function books(app){
    app.get('/:query', function(req, res, next) {

        res.writeHead(200, { 'Content-Type': 'text/html' });

        var rediff = require('./searcher-rediff');
        rediff.on('on_book', function(item){
            res.write(item + "<br/>");
        });
        rediff.on('completed', function(){
            res.end();
        });
        rediff.search(escape(req.params.query));

    });
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

现在我注意到在第一次请求时,我得到了这个:

SyntaxError: …
Run Code Online (Sandbox Code Playgroud)

javascript screen-scraping connect node.js

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

Rails 3自定义路由,将多个ID作为参数

如何添加到我的Rails 3应用程序的路由,该应用程序允许我有一个映射到RESTful资源中接受多个参数的操作的URL:

/modelname/compare/1234,2938,40395
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中,我想访问这些ID:

@modelname = Modelname.find(params[:modelname_ids])
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在尝试比赛'/modelname/compare/:modelname_ids', :to => 'modelname#compare',但我一直在努力No route matches "/modelname/compare/4df632fd35be357701000005,4df632fd35be357701000005".有什么建议?

rest routes ruby-on-rails custom-routes ruby-on-rails-3

5
推荐指数
1
解决办法
3756
查看次数

即使照片上传,Carrierwave也会返回406 Not Acceptable

我正在使用Carrierwave使用简单的控制器将照片上传到我的rails应用程序:

  # POST /photos
  # POST /photos.xml
  def create
    @photo = Photo.new(params[:photo])

    respond_to do |format|
      if @photo.save
        format.html { redirect_to(@photo, :notice => 'Photo was successfully created.') }
        format.xml  { render :xml => @photo, :status => :created, :location => @photo }
        format.json { render :json => @photo, :status => :created }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @photo.errors, :status => :unprocessable_entity }
        format.json { render :json => @photo.errors, :status => :unprocessable_entity }
      end
    end …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails image-uploading mongoid ruby-on-rails-3 carrierwave

5
推荐指数
1
解决办法
1003
查看次数

使用S3上托管的媒体重新生成WordPress缩略图

我有一个WordPress网站,使用WPRO(WordPress只读)插件来托管Amazon S3上的所有媒体文件.我在自定义主题中更改了缩略图和图像大小,并将新图像上传到媒体库使用了新的大小.但是,当我尝试使用"重新生成缩略图"重新生成所有缩略图时,它不起作用,经常抱怨无法找到原始缩略图.

如何强制重新生成缩略图插件以使用S3上的原始图像重新创建现有图像的缩略图?

wordpress wordpress-theming amazon-s3

5
推荐指数
1
解决办法
936
查看次数

在Rails中返回1x1 .gif作为响应

我正在构建一个Rails应用程序,可以在外部站点上进行转换跟踪.我想允许用户在其转化页面(例如AdWords)中粘贴图片代码,并且无论何时请求该图片,我的应用都会转换注册.

respond_to do |format|
  if @conversion.save
    flash[:notice] = 'Conversion was successfully created.'
    format.html { redirect_to(@conversion) }
    format.xml  { render :xml => @conversion, :status => :created, :location => @conversion }
    format.js { render :json => @conversion, :status => :created }
    format.gif { head :status => :ok }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @conversion.errors, :status => :unprocessable_entity }
  end
end    
Run Code Online (Sandbox Code Playgroud)

这样,浏览器就会获得一个不存在的.gif图像.有一个更好的方法吗?

tracking ruby-on-rails google-adwords

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

Mongoid的Model.near方法的最大距离

我一直在使用geo near查询一段时间了,但我似乎无法弄清楚如何将结果限制在一定范围内.例如,如何在此查询中将搜索限制在20英里范围内?

Place.near(:coordinates => location.reverse) 
# must reverse the resulting coordinates array because mongo stores them backwards [lng,lat]
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails geolocation mongodb mongoid

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

在PostGIS中查找包含点的所有多边形

我已经设法获得特定多边形中包含的所有点的列表,但是如何查询PostGIS数据库以找出包含给定点的多边形?

假设我有一个places带有lat/lon位置(POINT类型)的areas表和一个geometry带有MULTIPOLYGON类型列的表.

如何编写一个返回地点列表和包含每个点的所有区域的查询?例如:

place_id, area_ids
1, {23,425,536}
2, {30,425}
-- etc...
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgis ruby-on-rails geolocation

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

Heroku文件上传问题

我一直在将CSV文件上传到Heroku并进行处理时遇到问题.它在我的本地环境中工作正常.请注意,我不需要在Heroku上保存文件,只需在请求期间访问它,以便将其转换为字符串以进行处理并导入到DB中.

我想做的是:

  1. 上传CSV文件
  2. 删除标题块,具体取决于报告来自哪个网络
  3. 将CSV数据读入数据库.这一步很好.

控制器代码:

  def create
    @account = Account.find(params[:report][:account_id])
    @file = params[:report][:file].read
    # logger.info file.inspect
    case @account.provider
    when "Microsoft AdCenter" then @file.gsub!(/\A(.*)\n\n/im, "")
    when "Google AdWords" then @file.gsub!(/\A(.*)\n/i, "")
    else
      raise "Invalid PPC report format"
    end
  end
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪:

Processing ImportController#create (for XX.182.6.XXX at 2010-09-11 09:19:01) [POST]
  Parameters: {"commit"=>"Upload", "action"=>"create", "authenticity_token"=>"XXXXXwoFpvRO3vN8XVXRDg8rikFsj2TFTW7mrcTgg=", "controller"=>"import", "report"=>{"account_id"=>"1", "file"=>#<File:/home/slugs/126077_0657264_9a92/mnt/tmp/RackMultipart.9845.0>}}

NoMethodError (private method `gsub!' called for #<Tempfile:0x2b8ccb63ece0>):
  /usr/local/lib/ruby/1.8/delegate.rb:270:in `method_missing'
  app/controllers/import_controller.rb:15:in `create'
  warden (0.10.7) lib/warden/manager.rb:35:in `call'
  warden (0.10.7) lib/warden/manager.rb:34:in `catch'
  warden (0.10.7) lib/warden/manager.rb:34:in `call'
  /home/heroku_rack/lib/static_assets.rb:9:in `call' …
Run Code Online (Sandbox Code Playgroud)

ruby file-upload ruby-on-rails heroku fastercsv

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

使用MongoDB/Mongoid和计算字段聚合函数

我正在迁移现有的Rails应用程序以使用MongoDB(使用Mongoid),而且我在查找如何进行聚合时遇到一些麻烦,就像使用MySQL一样.

以前我有类似的东西SELECT DATE(created_at) AS day, SUM(amount) AS amount GROUP BY day,哪个会返回一个你可以在模板中循环的集合,如下所示:

:day => '2011-03-01', :amount => 55.00 
:day => '2011-03-02', :amount => 45.00
etc...
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何在Mongoid中做到这一点?该模型非常简单:

class Conversion
  include Mongoid::Document
  include Mongoid::Timestamps

  field :amount,      :type => Float, :default => 0.0
  ...
  # created_at generated automatically, standard Rails...
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

-Avishai

mapreduce ruby-on-rails mongodb mongoid mongodb-query

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

Ubuntu上的乘客/ Ruby内存使用失控

最近几天Passenger一直在我的Slicehost VPS上消耗大量内存,而我似乎无法控制住它.它可以运行几个小时,然后突然产生大量的红宝石.我认为Apache是​​问题,所以我切换到Nginx,但问题仍然存在.这是一个转储top:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                       
 5048 avishai   20   0  160m  43m 1192 S    0 10.9   0:00.77 ruby1.8                                                                                                                                                                        
 5102 avishai   20   0  151m  41m 1392 S    0 10.6   0:00.07 ruby1.8                                                                                                                                                                        
 5091 avishai   20   0  153m  30m 1400 D    0  7.6   0:00.27 ruby1.8                                                                                                                                                                        
 5059 avishai   20   0  158m  27m 1344 D    0  7.0   0:00.64 ruby1.8                                                                                                                                                                        
 4809 avishai   20   0  161m  27m 1208 D    0  6.9   0:06.65 ruby1.8                                                                                                                                                                        
 4179 avishai   20   0 …
Run Code Online (Sandbox Code Playgroud)

ruby passenger nginx

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

无法使用PostGIS/RGeo保存多边形

如何使用适用于Rails的PostGIS适配器保存多边形?在我的模型中,我有:

self.rgeo_factory_generator = RGeo::Geos.factory_generator
set_rgeo_factory_for_column(:bounds, RGeo::Geographic.spherical_factory(:srid => 4326))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将多边形保存到数据库时,它不会引发任何错误,但始终无法存储多边形:

1.9.3p194 :011 > n.bounds = "POLYGON(-149.737965876574 61.1952881991104, -149.71848377896 61.1953198415937, -149.718483761252 61.1952938698801, -149.718483872402 61.1951924591105)"
 => "POLYGON(-149.737965876574 61.1952881991104, -149.71848377896 61.1953198415937, -149.718483761252 61.1952938698801, -149.718483872402 61.1951924591105)" 
1.9.3p194 :012 > n.save
   (0.2ms)  BEGIN
   (0.3ms)  COMMIT
 => true 
1.9.3p194 :013 > n.bounds
 => nil 
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?

postgresql postgis ruby-on-rails

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

Refinery CMS中的自定义字段

如何在Refinery CMS中添加自定义字段?也就是说,我想扩展基本页面模型以包含一些其他内容,例如截图,发布者名称,类别和各种其他字段.你是如何实现的?

ruby ruby-on-rails content-management-system refinerycms

0
推荐指数
1
解决办法
2373
查看次数