标签: ruby

Ruby代码美化,在多行上分割长指令

我们如何编写以下语句以提高可读性?

Promotion.joins(:category).where(["lft>=? and rgt<=?", c.lft, c.rgt]).joins(:shops).where(:promotions_per_shops => { :shop_id => shops_id }).count('id', :distinct => true)
Run Code Online (Sandbox Code Playgroud)

以下内容无法编译

Promotion.joins(:category)
         .where(["lft>=? and rgt<=?", c.lft, c.rgt])
         .joins(:shops)
         .where(:promotions_per_shops => { :shop_id => shops_id })
         .count('id', :distinct => true)

syntax error, unexpected '.', expecting kEND
                     .where(["lft>=? and rgt<=?", c.lft, c.rgt])
Run Code Online (Sandbox Code Playgroud)

ruby code-formatting

41
推荐指数
3
解决办法
2万
查看次数

Sublime Text 2中的RubyTest

我试图让RubyTest在Sublime Text 2中工作.我遵循Github自述文件中的指令并得到以下错误.有谁知道我怎么解决这个问题?

/bin/sh: rspec: command not found
Run Code Online (Sandbox Code Playgroud)

ruby rspec sublimetext

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

Coffeescript中的等效Ruby .times

以下是最简洁的等效Coffeescript:

# ruby    
3.times { puts 'hi' }
Run Code Online (Sandbox Code Playgroud)

我能想到的最好的是:

# coffeescript
for n in [1..3]
  console.log 'hi'
Run Code Online (Sandbox Code Playgroud)

ruby coffeescript

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

"每当"宝石在Heroku上运行cron工作

我创建了一个使用随时随地宝石的应用程序.宝石创造了cron工作.我让它在本地工作,但似乎无法让它在heroku雪松上工作.执行此操作的命令是什么?

运行:

heroku run whenever --update-crontab job1
Run Code Online (Sandbox Code Playgroud)

不起作用

ruby cron ruby-on-rails heroku whenever

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

如何自定义Jekyll的网址?

我想用Jekyll创建一个网站.不是博客.有没有办法避免在网址和网页文件名中指定创建日期?

我认为Jekyll背后的想法非常棒,但它似乎与博客生成内容有关,而在更一般的用例中也可能有用.

html ruby jekyll

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

Ruby/Rails - 获取数组中的最后两个值

@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]

@numbers.last 会给我8

我需要抓住最后两个记录.到目前为止,我已经尝试了这个,但它抛出了NoMethodError:

@numbers.last - 1

ruby ruby-on-rails

41
推荐指数
2
解决办法
3万
查看次数

如何在Ruby on Rails中解压缩文件?

我正在Ruby on Rails上将文件上传到服务器

通常,它是一个文本文件,我将其作为提交ActiveRecord中的"文件"字段保存在模型中,其他字段包括提交标题等.

但是,用户也可以提交zip文件.在这种情况下,zip文件应该解压缩,并且对于zip中的每个文件,应该使用相同的文本字段创建新的Submission,但是当前文件.

我怎么能做到这一点?

我查看了网络上的解压缩示例,但大多数都使用目录来解压缩文件.我不确定我是否需要它,因为在当前的SubmissionsController创建方法中,接收到一个文件对象,并且我假定在调用Submission save方法时自动生成保存文件的路径.所以我想也许我应该将zip文件解压缩到内存中以获取文件对象数组,然后使用每个文件对象创建一个新的Submission但是相同的字段然后让ActiveRecord在将它们保存到文件时为每个文件生成文件路径.数据库.我可能在这里错了,因为我对Rails和Ruby有点新意.

ruby zip ruby-on-rails file

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

Bundler不使用rbenv,找不到[gem]

我刚刚从rvm切换到rbenv,我正在尝试使用bundler进行gem管理.运行bundle install并尝试运行一个简单的sinatra应用程序(ruby app.rb),我得到这个:

Could not find haml-3.1.4 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)

bundle install再次跑步没有效果.还尝试bundle update了另一个问题回复的建议.

这是我的Gemfile:

source "http://rubygems.org"

gem "sinatra"
gem "haml"
Run Code Online (Sandbox Code Playgroud)

这就是bundle show产生的

* bundler (1.0.22)
* haml (3.1.4)
* rack (1.4.1)
* rack-protection (1.2.0)
* sinatra (1.3.2)
* tilt (1.3.3)
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序所需要的:

require "rubygems"
require "bundler/setup"
require 'sinatra'
Run Code Online (Sandbox Code Playgroud)

我敢说这是一种路径问题,其中bundler和rbenv没有一起玩.我试过通过rbenv的文档查看,但无法找到任何东西.

注意:在另一个sinatra应用程序中,我尝试运行它时会得到以下内容:

Could not find addressable-2.2.7 in any of the sources
Run `bundle …
Run Code Online (Sandbox Code Playgroud)

ruby sinatra bundler rbenv

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

如何将参数传递给array.map快捷方式?

给出以下数组a:

a = [1, 2, 3, 4, 5]  
Run Code Online (Sandbox Code Playgroud)

我该怎么办:

a.map { |num| num + 1 }  
Run Code Online (Sandbox Code Playgroud)

使用简短表示法:

a.map(&:+ 1)  
Run Code Online (Sandbox Code Playgroud)

要么:

a.map(&:+ 2)  
Run Code Online (Sandbox Code Playgroud)

其中1和2是参数?

ruby

41
推荐指数
3
解决办法
2万
查看次数

在rails活动记录上使用ruby INSERT多个记录

有没有办法一次插入多个记录而不是一个?

我有一个非常非常丑陋的rake任务,正在执行以下操作......

        VoteRecord.create(:prospect_id => prospect.id, :state => "OH", :election_type => "PR", :election => "2000-03-07", :party => row[45], :participate => participated(row[45]))
        VoteRecord.create(:prospect_id => prospect.id, :state => "OH", :election_type => "GE", :election => "2000-11-07", :party => row[46], :participate => participated(row[46])) 
        VoteRecord.create(:prospect_id => prospect.id, :state => "OH", :election_type => "SP", :election => "2000-05-08", :party => row[47], :participate => participated(row[47]))
        VoteRecord.create(:prospect_id => prospect.id, :state => "OH", :election_type => "GE", :election => "2001-11-06", :party => row[48], :participate => participated(row[48]))
        VoteRecord.create(:prospect_id => prospect.id, :state => "OH", …
Run Code Online (Sandbox Code Playgroud)

ruby mysql activerecord ruby-on-rails insert

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