标签: activesupport

无法使用cache_classes = true为Concern(ActiveSupport :: Concern :: MultipleIncludedBlocks)定义多个"包含"块

我有一个在Rails 4.1.1应用程序中使用的模块

module A
   extend ActiveSupport::Concern
   included do
     #Some code
   end
end
Run Code Online (Sandbox Code Playgroud)

它包含在一个类中

class Some
  include A
end
Run Code Online (Sandbox Code Playgroud)

这与伟大工程cache_classes=trueapplication.rb.现在,如果我关闭类的缓存,我会Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks)在启动服务器时获得异常upson.

由于重新加载类是由Rails完成的,应该如何处理这样的问题?

ruby-on-rails activesupport

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

如何在Ruby中创建新的Date实例

如何在给定日期的IRB中创建新的Date对象.以下不起作用.

1.9.3p194 :053 > require 'active_support'
 => true 
1.9.3p194 :054 > Date.new
 => #<Date:0x9d80730> 
1.9.3p194 :055 > Date.parse('12/01/2012')
NoMethodError: undefined method `parse' for Date:Class
        from (irb):55

1.9.3p194 :055 > Date.new('12/01/2012')
ArgumentError: wrong number of arguments(1 for 0)
Run Code Online (Sandbox Code Playgroud)

ruby datetime ruby-on-rails date activesupport

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

Rails ActiveSupport时间解析?

Rails的ActiveSupport模块使用许多方法扩展了内置的ruby Time类.

值得注意的是,有一种to_formatted_s方法,它允许您编写Time.now.to_formatted_s(:db)以获取数据库格式的字符串,而不是必须在strftime任何地方编写丑陋的格式字符串.

我的问题是,有没有办法倒退?

类似于Time.parse_formatted_s(:db)解析数据库格式的字符串,返回一个新的Time对象.这似乎是rails应该提供的东西,但如果是,我找不到它.

我只是无法找到它,或者我是否需要自己编写?

谢谢

ruby time parsing ruby-on-rails activesupport

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

3.days.ago,2.hours.from_now等没有Rails?

有些书中提到的一些宝石与装饰数字#days,#megabytes,#minutes等等.这是只有在的ActiveSupport,还是有提供此功能用于(小)无轨宝石小宝石?我想在一个小小的宝石中使用这个功能作为DSL的一部分.

ruby rubygems ruby-on-rails numeric activesupport

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

如何将TZInfo标识符转换为Rails TimeZone名称/密钥

如何将作为TZInfo标识符接收的js值转换为Rails TimeZone名称/密钥?

FROM:"America/New_York"从JavaScript TZinfo检测 TO 返回
:"Eastern Time (US & Canada)"Rails TimeZone中使用的约定


或者另一个例子:
"Pacific/Honolulu"=>转换为=>"Hawaii"

两者都可用于ActiveSupport::TimeZone < Object映射,但rails "Eastern Time (US & Canada)"在下拉列表,验证和存储中使用键[ig ] Time.use_zone().


根据我的理解,ActiveSupport::TimeZone.us_zones这似乎是重要的,特别是DayLights节省时间(轨道声音处理得好)和只匹配偏移不会完成.如果没有使用rails TimeZone名称存储到DB,则验证将失败,并且在用户的配置文件设置页面中与下拉列表无法正确匹配ActiveSupport::TimeZone.zones_map

这样做的目的是用户不必在注册时选择他们的时区,或者在注册后需要在他们的设置中更改它们.浏览器检测到它并在注册时将其传递给hidden_​​field.在极少数情况下,他们在与家庭/工作不同的地方注册.他们可以稍后在其帐户设置中手动覆盖.

在尝试摄取js时区检测时似乎是一个常见的差距.这甚至可能成为如何将返回的信息从js传递给rails进行转换然后返回js以存储回表单的hidden_​​field的次要问题?希望我能正确地解决这个问题,并且确实有点使用rails的绿色,所以可能有一个简单的解决方案......

非常感谢所有的帮助!
-E


ActiveSupport Time.zone文档
http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html#method-i-parse

MAPPING = {"Eastern Time (US & Canada)" => "America/New_York"
Run Code Online (Sandbox Code Playgroud)


使用js打包gem'temporal-rails'来检测用户时区:https:
//github.com/jejacks0n/temporal

用户Time_Zone实现如下:http://railscasts.com/episodes/106-time-zones-revised

*使用设计和设计 - 不可避免


注册视图脚本

    <script>
    $(function() {
        var detected_zone = Temporal.detect();
        console.log(detected_zone);  // returns object
        detected_zone = detected_zone.timezone.name; …
Run Code Online (Sandbox Code Playgroud)

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

25
推荐指数
1
解决办法
8889
查看次数

Rails:在时区中获得#beginning_of_day

我有一个rails应用程序的默认时区设置.和Date对象的一个​​实例.

如何让Date#beginning_of_day返回指定时区内的一天的开头,而不是我当地的时区.

是否有其他方法可以在给定日期的指定时区内开始白天时间?

date = Date.new(2014,10,29)

zone = ActiveSupport::TimeZone.new('CET')
date.foo(zone) # should return "Wed, 29 Oct 2014 00:00:00 CET +01:00"

zone = ActiveSupport::TimeZone.new('UTC')
date.foo(zone) # should return "Wed, 29 Oct 2014 00:00:00 UTC +00:00"
Run Code Online (Sandbox Code Playgroud)

timezone ruby-on-rails date activesupport ruby-on-rails-2

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

无法使用ActiveSupport :: Inflector进行复数化/单一化(在irb中)

irb(main):001:0> require 'active_support'
=> true
irb(main):002:0> require 'active_support/inflector/inflections'
=> true
irb(main):003:0> ActiveSupport::Inflector.pluralize('test')
=> "test"
irb(main):004:0> ActiveSupport::Inflector.singularize('tests')
=> "tests"
irb(main):005:0> ActiveSupport::Inflector.titleize('hat simulator')
=> "Hat Simulator"
<ort::Inflector.tableize("america's number one hat simulator")
=> "america's number one hat simulator"
Run Code Online (Sandbox Code Playgroud)

嗯,基本上,这就是问题所在.让我感到困惑的是,方法titleize似乎工作正常,但是tableize,pluralize并且singularize没有.

我忘了要求什么吗?

(在另一个注释中,我注意到这个页面提供了一些例子"post".pluralize,当我尝试时,会产生NoMethodError: undefined method 'pluralize' for "post":String这样的结果.但也许这可以为另一个问题保存.)

ruby activesupport

20
推荐指数
1
解决办法
8057
查看次数

Rails/RSpec:功能规格中没有"旅行"时间助手?

我只是尝试travel在我的一个功能规范中使用Rails的时间助手方法:

scenario 'published_at allows to set a publishing date in the future' do
  magazine_article.update_attribute(:published_at, Time.now + 1.day)
  expect { visit magazine_article_path(magazine_article.magazine_category, magazine_article) }
         .to raise_error(ActiveRecord::RecordNotFound)

  travel 2.days do
    visit magazine_article_path(magazine_article.magazine_category, magazine_article)
    expect(page).to have_content('Super awesome article')
  end
end 
Run Code Online (Sandbox Code Playgroud)

它给了我这个:

NoMethodError:
   undefined method `travel' for #<RSpec::ExampleGroups::MagazineArticles::AsUser::Viewing:0x007f84a7a95640>
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

http://api.rubyonrails.org/classes/ActiveSupport/Testing/TimeHelpers.html

rspec ruby-on-rails activesupport ruby-on-rails-4 ruby-on-rails-5

20
推荐指数
1
解决办法
3114
查看次数

ActiveSupport :: Concern .. Deprecation Warning中的InstanceMethods模块

我有一个在Sinatra建立的投资组合网站.我有一段时间没有工作过,一直在做一些Rails.我昨天通过运行'gem update'更新了我的宝石列表.我不知道这是否与此有关,但我今天再次开始在投资组合网站上工作,我一直在收到一些弃用警告.

弃用警告:ActiveSupport :: Concern中的InstanceMethods模块将不再自动包含在内.请直接在Work中定义实例方法.(来自/Users/joris/Desktop/sinatra/portfolio/models/work.rb:2中包括)

我不知道如何解决这个问题,当我运行应用程序时,它不再起作用了..转到我的路线只返回Sinatra 404页面.(另外,Rails不是ActiveSupport的一部分吗?为什么会出现在我的Sinatra应用程序中......)

它在错误中提到的文件是work.rb:

class Work
  include MongoMapper::Document
     key :title, String
     key :url, String
     key :filename, String
     key :file, String
     key :description, String

    timestamps!
end
Run Code Online (Sandbox Code Playgroud)

这是我的主文件(portfolio.rb):

require "sinatra"
require 'twitter'
require 'RedCloth'
require 'html_truncator'
require 'digest/md5'

class Portfolio < Sinatra::Application

  require_relative 'config/init'
  require_relative 'helpers/init'
  require_relative 'models/init'
  require_relative 'routes/init'
Run Code Online (Sandbox Code Playgroud)

模型init文件(调用work.rb文件)具有以下内容:

require 'mongo_mapper'

MongoMapper.connection = Mongo::Connection.new('lalaland.com', 10070)
MongoMapper.database = 'hello'
MongoMapper.database.authenticate('lalala', 'hello')

require_relative 'post'
require_relative 'work'
Run Code Online (Sandbox Code Playgroud)

编辑:刚刚看到我也得到它 models/post.rb

弃用警告:ActiveSupport :: Concern中的InstanceMethods模块将不再自动包含在内.请直接在Post中定义实例方法.(来自/Users/joris/Desktop/sinatra/portfolio/models/post.rb:2中包括)

ruby activesupport deprecated sinatra

18
推荐指数
1
解决办法
9594
查看次数

如何使用NSTimeZone -timeZoneWithName:来自Rails ActiveSupport的城市名称?

如果我只有像曼谷东京这样的城市名称,我怎样才能[NSTimeZone timeZoneWithName:@"Asia/Tokyo"]在城市前面的大陆和斜线上提供时区参数 ?

我已经尝试过[NSTimeZone timeZoneWithName:@"Tokyo"],它不起作用.

timezone activesupport nstimezone ios

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