标签: ruby

如何在Ruby中返回数组的一部分?

使用Python中的列表,我可以使用以下代码返回它的一部分:

foo = [1,2,3,4,5,6]
bar = [10,20,30,40,50,60]
half = len(foo) / 2
foobar = foo[:half] + bar[half:]
Run Code Online (Sandbox Code Playgroud)

由于Ruby在数组中做了所有事情,我想知道是否有类似的东西.

ruby arrays list slice

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

如何通过散列中的值对散​​列数组进行排序?

这个Ruby代码的行为不像我期望的那样:

# create an array of hashes
sort_me = []
sort_me.push({"value"=>1, "name"=>"a"})
sort_me.push({"value"=>3, "name"=>"c"})
sort_me.push({"value"=>2, "name"=>"b"})

# sort
sort_me.sort_by { |k| k["value"]}

# same order as above!
puts sort_me
Run Code Online (Sandbox Code Playgroud)

我正在寻找按键"值"对哈希数组进行排序,但它们是未分类打印的.

ruby arrays sorting hash

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

无法将时间与RSpec进行比较

我正在使用Ruby on Rails 4和rspec-rails gem 2.14.对于我的对象,我想updated_at在控制器动作运行后将当前时间与对象属性进行比较,但由于规范没有通过,我遇到了麻烦.也就是说,鉴于以下是规范代码:

it "updates updated_at attribute" do
  Timecop.freeze

  patch :update
  @article.reload
  expect(@article.updated_at).to eq(Time.now)
end
Run Code Online (Sandbox Code Playgroud)

当我运行上面的规范时,我收到以下错误:

Failure/Error: expect(@article.updated_at).to eq(Time.now)

   expected: 2013-12-05 14:42:20 UTC
        got: Thu, 05 Dec 2013 08:42:20 CST -06:00

   (compared using ==)
Run Code Online (Sandbox Code Playgroud)

如何使规范通过?


注意:我还尝试了以下(注意utc添加):

it "updates updated_at attribute" do
  Timecop.freeze

  patch :update
  @article.reload
  expect(@article.updated_at.utc).to eq(Time.now)
end
Run Code Online (Sandbox Code Playgroud)

但规格仍然没有通过(注意"得到"的价值差异):

Failure/Error: expect(@article.updated_at.utc).to eq(Time.now)

   expected: 2013-12-05 14:42:20 UTC
        got: 2013-12-05 14:42:20 UTC

   (compared using ==)
Run Code Online (Sandbox Code Playgroud)

ruby comparison time rspec ruby-on-rails

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

您不提供您提供的授权机制.请使用AWS4-HMAC-SHA256

AWS::S3::Errors::InvalidRequest The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.当我尝试将文件上传到新法兰克福地区的S3存储桶时出错.一切都适用于US Standard地区.

脚本:

backup_file = '/media/db-backup_for_dev/2014-10-23_02-00-07/slave_dump.sql.gz'
s3 = AWS::S3.new(
    access_key_id:     AMAZONS3['access_key_id'],
    secret_access_key: AMAZONS3['secret_access_key']
)

s3_bucket = s3.buckets['test-frankfurt']

# Folder and file name
s3_name = "database-backups-last20days/#{File.basename(File.dirname(backup_file))}_#{File.basename(backup_file)}"

file_obj = s3_bucket.objects[s3_name]
file_obj.write(file: backup_file)
Run Code Online (Sandbox Code Playgroud)

aws-sdk(1.56.0)

怎么解决?

谢谢.

ruby amazon-s3 amazon-web-services aws-sdk

113
推荐指数
8
解决办法
9万
查看次数

如何从ruby中的字符串名称创建类实例?

我有一个类的名称,我想创建该类的实例,以便我可以遍历该类的架构中存在的每个rails属性.

我该怎么做呢?

  1. 我将该名称作为我要检查的类的字符串
  2. 我想我需要实例化一个类实例,以便我可以
  3. 循环遍历它的属性并打印它们.

ruby ruby-on-rails-3

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

从字符串Ruby on Rails中删除html

我正在使用Ruby on Rails,有没有办法html使用sanitize或equal方法从字符串中剥离并且只在输入标记的value属性中保留文本?

html ruby string ruby-on-rails-3

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

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

在Ruby中创建一个空文件:"触摸"等效?

在Ruby中创建文件的最佳方法是什么?

类似于Unix命令,触摸:

touch file.txt
Run Code Online (Sandbox Code Playgroud)

ruby file

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

即使在使用rvm pkg install zlib之后也无法加载此类文件 - zlib

我使用rvm安装了zlib软件包和ruby 1.9.3,但是每当我尝试安装gem时它会说 cannot load such file -- zlib

我以前安装的命令是

$ rvm install 1.9.3
Run Code Online (Sandbox Code Playgroud)
$ rvm pkg install zlib

$ rvm reinstall 1.9.3 --with-readline-dir=/home/username/.rvm/usr \
    --with-iconv-dir=/home/username/.rvm/usr \
    --with-zlib-dir=/home/username/.rvm/usr \
    --with-openssl-dir=/home/username/.rvm/usr

$ rvm use 1.9.3

$ gem install heroku
ERROR: Loading command: install (LoadError)
    cannot load such file -- zlib
ERROR: While executing gem ... (NameError)
    uninitialized constant Gem::Commands::InstallCommand

关于这个主题的所有帮助告诉我要做rvm pkg install zlib,然后重新安装红宝石--with-zlib-dir=/home/username/.rvm/usr,但这不起作用.

ruby linux gem rvm

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

如何解决"你需要安装Ruby和Sass并在你的PATH中完成这项任务"警告?

我正在设置一台新的Mac用于工作.我在全球安装了Grunt&Grunt CLI.然后我npm install在一个项目文件夹内部安装了所有依赖项.

到目前为止没有问题,但是一旦我尝试运行sass:dist任务,我就会收到此警告:

Warning: You need to have Ruby and Sass installed and in your PATH for
this task to work. More info:
https://github.com/gruntjs/grunt-contrib-sass Use --force 
to continue.
Run Code Online (Sandbox Code Playgroud)

我的理解是我需要在更全局的层面上安装Ruby和Sass才能运行此任务.由于我还很擅长使用终端,我做了一个快速搜索,找出了什么PATH- 似乎是一些存储重要数据的系统路径(可以更改).

这是否意味着我可以简单sudo grunt install contrib-sass -g地解决这个问题?那么Ruby呢 - 我一直以为它已经安装在OS X上了?

ruby macos bash terminal sass

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