我希望以以下格式显示日期:短星期,短月,月中没有前导零但包括"th","st","nd"或"rd"后缀.
例如,问这个问题的那天会显示"Thu Oct 2nd".
我正在使用Ruby 1.8.7,而Time.strftime似乎并没有这样做.如果存在标准库,我更喜欢它.
我的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 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) 我正在尝试使用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,则会出现以下错误:
指定的密钥不存在.
我在这做错了什么?
使用方法检查数组是否为空是不好的any??
a = [1,2,3]
a.any?
=> true
a.clear
a.any?
=> false
Run Code Online (Sandbox Code Playgroud)
或者它更好用unless a.empty?吗?
这是控制台输出:
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 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实例变量什么时候设置? "但我在使用类实例变量时有两种想法.
类变量由类的所有对象共享,实例变量属于一个对象.如果我们有类变量,那么使用类实例变量的余地就不大了.
有人可以解释这两者之间的区别以及何时使用它们?
这是一个代码示例:
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
我做了一个铁轨项目,
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)