标签: ruby

在Ruby on Rails中,如何使用"th"后缀格式化日期,如"Sun Oct 5th"?

我希望以以下格式显示日期:短星期,短月,月中没有前导零但包括"th","st","nd"或"rd"后缀.

例如,问这个问题的那天会显示"Thu Oct 2nd".

我正在使用Ruby 1.8.7,而Time.strftime似乎并没有这样做.如果存在标准库,我更喜欢它.

ruby ruby-on-rails date

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

如何在ruby中安全加入路径名?

我的Rails开发环境是基于Windows的,我的生产环境是基于Linux的.

VirtualHost可能会被使用.假设需要在/public文件夹中引用一个文件名File.open('/tmp/abc.txt', 'r').

- 但在Windows中它应该是C:\tmp\abc.txt.如何进行正确的路径连接以处理两种不同的环境?

prefix_tmp_path = '/tmp/'
filename = "/#{rand(10)}.txt"

fullname = prefix_tmp_path + filename # /tmp//1.txt <- but I don't want a double //
Run Code Online (Sandbox Code Playgroud)

prefix_tmp_path = "C:\tmp\"我得到C:\tmp\/1.txt

处理这两种情况的正确方法是什么?

ruby

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

如何测试rails中是否存在参数

我在Ruby on Rails中使用IF语句来尝试测试是否设置了请求参数.无论是否设置了两个参数,以下if块的第一部分都会被触发.如果设置了params [:one]和params [:two],我该如何才能触发此部分?

if (defined? params[:one]) && (defined? params[:two])
 ... do something ...
elsif (defined? params[:one])
 ... do something ...
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

AWS S3:您尝试访问的存储区必须使用指定的端点进行寻址

我正在尝试使用AWS-SDK-Core Ruby Gem删除上传的图像文件.

我有以下代码:

require 'aws-sdk-core'

def pull_picture(picture)
    Aws.config = {
        :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
        :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
        :region => 'us-west-2'
    }

    s3 = Aws::S3::Client.new

    test = s3.get_object(
        :bucket => ENV["AWS_S3_BUCKET"],
        :key => picture.image_url.split('/')[-2],   
    )
end
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

您尝试访问的存储区必须使用指定的端点进行寻址.请将以后的所有请求发送到此端点.

我知道该区域是正确的,因为如果我将其更改为us-east-1,则会出现以下错误:

指定的密钥不存在.

我在这做错了什么?

ruby ruby-on-rails amazon-s3 amazon-web-services

173
推荐指数
6
解决办法
10万
查看次数

检查数组是否为空:是吗?

使用方法检查数组是否为空是不好的any?

a = [1,2,3]

a.any?
=> true

a.clear

a.any?
=> false
Run Code Online (Sandbox Code Playgroud)

或者它更好用unless a.empty?吗?

ruby arrays

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

使用RVM安装Ruby 1.9.3但命令行不显示ruby -v

这是控制台输出:

sergio@sergio-VirtualBox:~$ rvm list

rvm rubies

   ruby-1.9.3 [ i386 ]

sergio@sergio-VirtualBox:~$ rvm use 1.9.3
Using /usr/share/ruby-rvm/gems/ruby-1.9.3

sergio@sergio-VirtualBox:~$ ruby -v
The program 'ruby' can be found in the following packages:
 * ruby1.8
 * ruby1.9.1
Try: sudo apt-get install <selected package>
Run Code Online (Sandbox Code Playgroud)

发生什么了?我需要重新启动机器吗?或者它应该立即起作用?我正在使用Ubuntu 11.10,任何帮助表示赞赏.

ruby ubuntu rvm

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

在Ruby on Rails中覆盖setter方法的正确方法是什么?

我正在使用Ruby on Rails 3.2.2,我想知道以下是否是一个"正确"/"正确"/"确定"的方式来覆盖我的类属性的setter方法.

attr_accessible :attribute_name

def attribute_name=(value)
  ... # Some custom operation.

  self[:attribute_name] = value
end
Run Code Online (Sandbox Code Playgroud)

上面的代码似乎按预期工作.但是,我想知道,通过使用上面的代码,将来我会遇到问题,或者至少,我应该在Ruby on Rails上遇到"我应该期待"/"可能发生"的问题.如果这不是覆盖setter方法的正确方法,那么正确的方法是什么?


注意:如果我使用代码

attr_accessible :attribute_name

def attribute_name=(value)
  ... # Some custom operation.

  self.attribute_name = value
end
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

SystemStackError (stack level too deep):
  actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:70
Run Code Online (Sandbox Code Playgroud)

ruby setter overriding ruby-on-rails ruby-on-rails-3

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

Ruby类实例变量与类变量

我读过" Ruby实例变量什么时候设置? "但我在使用类实例变量时有两种想法.

类变量由类的所有对象共享,实例变量属于一个对象.如果我们有类变量,那么使用类实例变量的余地就不大了.

有人可以解释这两者之间的区别以及何时使用它们?

这是一个代码示例:

class S
  @@k = 23
  @s = 15
  def self.s
    @s
  end
  def self.k
     @@k
  end

end
p S.s #15
p S.k #23
Run Code Online (Sandbox Code Playgroud)

我现在明白了,Class Instance Variables不会传递给继承链!

ruby instance-variables class-variables class-instance-variables

172
推荐指数
6
解决办法
11万
查看次数

安装libv8时出错:错误:无法构建gem本机扩展

我做了一个铁轨项目,

rails new test_bootstrap.
Run Code Online (Sandbox Code Playgroud)

成功了.

搬到了项目目录并添加了宝石

gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"
Run Code Online (Sandbox Code Playgroud)

并运行

bundle install
Run Code Online (Sandbox Code Playgroud)

之后,我有这个错误.

Installing libv8 (3.16.14.3)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
creating Makefile
??? ??? ?? ? ????.                                                          ??? ??? ?? ?
????.                                                          ??? ??? ?? ? ????.

c:/RailsInstaller/Ruby1.9.3/lib/ruby/ge
ms/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:58:in `setup_python!': libv8 requires
python 2 to be installed in order to build, but it is currently not available (RuntimeErr
or) from …
Run Code Online (Sandbox Code Playgroud)

ruby windows ruby-on-rails libv8

172
推荐指数
6
解决办法
9万
查看次数

从字符串中删除第一个字符的最简单方法是什么?

例:

[12,23,987,43
Run Code Online (Sandbox Code Playgroud)

删除" [" 的最快,最有效的方法是什么,使用可能是chop()第一个字符?

ruby string

171
推荐指数
7
解决办法
14万
查看次数