标签: activesupport

什么是Rails模块中的mattr_accessor?

我无法在Rails文档中找到这个,但似乎'mattr_accessor'是普通Ruby 类中'attr_accessor'(getter&setter)的模块推论.

例如.在课堂上

class User
  attr_accessor :name

  def set_fullname
    @name = "#{self.first_name} #{self.last_name}"
  end
end
Run Code Online (Sandbox Code Playgroud)

例如.在一个模块中

module Authentication
  mattr_accessor :current_user

  def login
    @current_user = session[:user_id] || nil
  end
end
Run Code Online (Sandbox Code Playgroud)

这个帮助方法由ActiveSupport提供.

ruby module ruby-on-rails class activesupport

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

如何在Rails中添加10天到当前时间

我试过做类似的事情

Time.now + 5.days
Run Code Online (Sandbox Code Playgroud)

但这不起作用,即使我依稀记得看到,并且留下深刻的印象,能够做类似的事情2.years.

我如何在Rails 3中做到这一点?

datetime ruby-on-rails activesupport ruby-on-rails-3

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

如何使用Active Support核心扩展?

我安装了Active Support 3.0.3,使用Ruby 1.8.7安装了Rails 3.0.3.

当我尝试使用时,1.week.ago我得到了

NoMethodError: undefined method 'week' for 1:Fixnum
from (irb):2
Run Code Online (Sandbox Code Playgroud)

其他核心扩展似乎有效.我在一个朋友的计算机上尝试过(同样的安装规范和旧版本),结果相同.

是什么赋予了?

所有这些都在IRB中.

ruby time extension-methods ruby-on-rails activesupport

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

在Rails 3中将UTC转换为本地时间

我在Rails 3中转换UTC TimeTimeWithZone本地时间时遇到问题.

Say momentTimeUTC中的一些变量(例如moment = Time.now.utc).如何转换moment到我的时区,照顾DST(即使用EST/EDT)?

更确切地说,如果时间对应于美国东部夏令时间上午9点和"3月7日上午9点",如果时间是美国东部时间上周一上午9点​​,我打算打印出"3月14日星期一上午9点​​".

希望还有另一种方式吗?

编辑:我首先认为 "EDT"应该是一个公认的时区,但"EDT"不是一个实际的时区,更像是时区的状态.例如,要求没有任何意义Time.utc(2011,1,1).in_time_zone("EDT").这有点令人困惑,因为"EST" 一个实际的时区,在一些不使用夏令时的地方使用,并且是(UTC-5)一年.

ruby timezone ruby-on-rails activesupport ruby-on-rails-3

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

ActiveSupport :: Memoizable引用哪种Ruby memoize模式?

所以在Rails 3.2中,不推荐使用ActiveSupport :: Memoizable.

消息如下:

DEPRECATION WARNING: ActiveSupport::Memoizable is deprecated and
will be removed in future releases,simply use Ruby memoization
pattern instead.
Run Code Online (Sandbox Code Playgroud)

它指的是"Ruby memoization pattern"(单数),好像有一个模式,我们都应该知道并参考...

我认为他们的意思是:

def my_method
  @my_method ||= # ... go get the value
end
Run Code Online (Sandbox Code Playgroud)

要么

def my_method
  return @my_method if defined?(@my_method)

  @my_method = # ... go get the value
end
Run Code Online (Sandbox Code Playgroud)

还有其他我错过的东西吗?

ruby memoization activesupport ruby-on-rails-3

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

使用 YAML.load_file 时升级到 Ruby 3.1 会导致 Psych::DisallowedClass 异常

升级到 ruby​​ 3.1 时,我在使用时看到以下排序错误消息YAML.load_file some_file_name

 Psych::DisallowedClass:
   Tried to load unspecified class: Matrix
Run Code Online (Sandbox Code Playgroud)

其他加载语句会导致类似的错误,但引用不同的未指定类,例如 OpenStruct。看来最新版本的 YAML 只加载允许的白名单中的类,因此需要使用 allowed_class 关键字来允许其他类。我努力了

hsh = YAML.load_file some_file_name, permitted_classes: [Matrix, OpenStruct]
Run Code Online (Sandbox Code Playgroud)

但这给出了错误

 Psych::DisallowedClass:
   Tried to load unspecified class: Symbol
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

ruby yaml activesupport

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

如何在Ruby中给定URL中的base64编码媒体

我正在尝试将图像上传到PingFM.他们的文件说:

media – base64 encoded media data.
Run Code Online (Sandbox Code Playgroud)

我可以通过URL访问此图像.我试过(几乎猜到了)这个:

ActiveSupport::Base64.encode64(open("http://image.com/img.jpg"))
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

TypeError: can't convert Tempfile into String
    from /usr/lib/ruby/1.8/base64.rb:97:in `pack'
    from /usr/lib/ruby/1.8/base64.rb:97:in `encode64'
    from (irb):19
    from :0
Run Code Online (Sandbox Code Playgroud)

ruby base64 encode ruby-on-rails activesupport

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

Rails ActiveSupport:如何声明引发错误?

我想在我的一个模型上测试一个抛出特定错误的函数.该函数看起来像这样:

def merge(release_to_delete)
  raise "Can't merge a release with itself!" if( self.id == release_to_delete.id )
  raise "Can only merge releases by the same artist" if( self.artist != release_to_delete.artist   )
  #actual merge code here
end
Run Code Online (Sandbox Code Playgroud)

现在我想做一个断言,当我用一个导致每个异常的参数调用这个函数时,实际上会抛出异常.我正在查看ActiveSupport文档,但我没有找到任何有希望的东西.有任何想法吗?

assert ruby-on-rails raise activesupport

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

在rails之外使用Rails 3的ActiveSupport核心扩展

我正在开发的宝石上使用ActiveSupport的核心扩展时遇到问题.

我有它与AS 2.3.8一起使用,但是一旦我想将它移植到3b4,扩展就停止了工作,我的测试结果填充了如下行:

undefined method `blank?' for "something":String
Run Code Online (Sandbox Code Playgroud)

我把它包括在gem "activesupport"后面require "active_support"

还有什么我需要打电话来包含这些扩展吗?

谢谢

rubygems ruby-on-rails activesupport

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

如何避免activesupport中的循环参数引用警告

如何避免activesupport中的循环参数引用警告.发生在ruby 2.2.0上

/home/ec2-user/apps/foo_prod/shared/bundle/ruby/2.2.0/gems/activesupport-3.2.21/lib/active_support/values/time_zone.rb:270: warning: circular argument reference - now
/home/ec2-user/apps/foo_prod/shared/bundle/ruby/2.2.0/gems/ruby-ole-1.2.11.7/lib/ole/types/base.rb:265: warning: duplicated key at line 266 ignored: 4095
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails activesupport

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