标签: activesupport

尝试部署时使用activesupport会遇到困难

我有一个rails应用程序,我试图部署到互联网上.我在Amazon EC2云上设置了一个服务器,我知道这是有效的,因为我已将另一个站点部署到同一台机器上.

当我尝试通过'rails console'或运行'rake db:seed'或者只是尝试浏览应用程序来运行这个新应用程序时,rails崩溃说它无法找到activiesupport:

/home/ec2-user/.gem/ruby/1.9.1/gems/activesupport-3.2.2/lib/active_support/core_ext/big_decimal/conversions.rb:1:in`requirent':无法加载此类文件 - bigdecimal (LoadError)

我的Rails版本是3.2.2,我使用的是ruby 1.9.3p0(2011-10-30)[x86_64-linux].我的数据库是通过Mongoid访问的MongoDB.我正在使用Passenger和Apache作为服务器.

是否有任何配置步骤或类似的东西我错过了?

PS我知道我不应该使用ec2-user,我还在试验.而且,我从来没有幸运的RVM.

activesupport amazon-ec2 ruby-on-rails-3

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

未初始化的常量TZInfo :: InvalidTimezoneIdentifier(NameError) - Rails 4

我正在将Rails 3.2应用程序升级到Rails 4.1.每当我尝试启动控制台或服务器时,我都会遇到此错误:

C:/Ruby200/lib/ruby/gems/2.0.0/gems/activesupport-4.1.0.beta1/lib/active_support
/core_ext/time/zones.rb:70:in `rescue in find_zone!': uninitialized constant TZI
nfo::InvalidTimezoneIdentifier (NameError)
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/activesupport-4.1.0.beta1/lib/a
ctive_support/core_ext/time/zones.rb:55:in `find_zone!'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/activesupport-4.1.0.beta1/lib/a
ctive_support/railtie.rb:20:in `block in <class:Railtie>'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/
initializable.rb:30:in `instance_exec'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/
initializable.rb:30:in `run'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/
initializable.rb:55:in `block in run_initializers'
        from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:150:in `block in tsort_each'
        from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:183:in `block (2 levels) in each
_strongly_connected_component'
        from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:219:in `each_strongly_connected_
component_from'
        from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:182:in `block in each_strongly_c
onnected_component'
        from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:180:in `each'
        from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:180:in `each_strongly_connected_
component'
        from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:148:in `tsort_each'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/
initializable.rb:54:in `run_initializers'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/
application.rb:285:in `initialize!'
        from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/ …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails activesupport

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

即使安装了Rails控制台,也无法找到activesupport-4.1.2

当我运行Rails 4.1.2服务器时,我没有错误.

但是,如果我运行'rails c',我会收到以下错误:

Could not find activesupport-4.1.2 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)

奇怪的是,activesupport-4.1.2已经安装并在Gemfile.lock中指定.我尝试过'捆绑更新'以及删除Gemfile.lock并运行'bundle install'.我也尝试在我的Rails gemfile中指定特定版本的ActiveSupport,但这已经无处可去了.

我真的很想使用最新的Rails,但是我不能使用控制台似乎很糟糕.

FIY:我在Linux中使用Ruby 2.1.2p95和RVM.

编辑:我卸载了所有activesupport宝石并重新安装4.1.2.这是'宝石列表activesupport说':

*** LOCAL GEMS ***

activesupport (4.1.2)
Run Code Online (Sandbox Code Playgroud)

同样的问题.

EDIT2:这是我的Gemfile.lock:

GEM
  remote: https://rubygems.org/
  specs:
    actionmailer (4.1.2)
      actionpack (= 4.1.2)
      actionview (= 4.1.2)
      mail (~> 2.5.4)
    actionpack (4.1.2)
      actionview (= 4.1.2)
      activesupport (= 4.1.2)
      rack (~> 1.5.2)
      rack-test (~> 0.6.2)
    actionview (4.1.2)
      activesupport (= 4.1.2)
      builder (~> 3.1)
      erubis (~> 2.7.0)
    activemodel (4.1.2)
      activesupport (= 4.1.2) …
Run Code Online (Sandbox Code Playgroud)

ruby gem ruby-on-rails activesupport bundler

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

在Ruby中用HashWithIndifferentAccess完全替换Hash是不是很糟糕?

我发现自己经常遇到错误,我用符号代替字符串访问哈希,反之亦然.我想要做:

require 'active_support/hash_with_indifferent_access'
Hash = HashWithIndifferentAccess
# (irb):xx: warning: already initialized constant Hash
Run Code Online (Sandbox Code Playgroud)

这个警告是因为已经定义了哈希,但我并不在乎.

当然,性能可能稍差.

当然,也许有些宝石会创建一个包含字符串和符号的哈希并且会破坏 - 但这有多常见?

这不好吗?反模式?我会后悔这样做吗?有什么缺点?有这样的好/坏经历吗?

ruby hash ruby-on-rails activesupport

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

我们如何在铁路上将EDT的时间转换为EST?

我知道EDT和EST之间的区别仅在于1小时的节约日,但我仍然认为Rails将其视为不同的时区,对吧?

现在,我有两个时间值,一个在EDT区域,另一个在IST.我需要将这些时间值转换为EST.我可以在IST时间成功完成,但不能用EDT.如何在Rails中将EDT时间转换为EST?

[36] pry(#<Quiz>)> Time.zone
=> (GMT-05:00) Eastern Time (US & Canada)
[37] pry(#<Quiz>)> from_date
=> 2015-03-02 00:00:00 +0530
[38] pry(#<Quiz>)> unlock_at
=> Mon, 16 Mar 2015 00:00:00 EDT -04:00
[39] pry(#<Quiz>)> from_date.in_time_zone
=> Sun, 01 Mar 2015 13:30:00 EST -05:00
[40] pry(#<Quiz>)> unlock_at.in_time_zone
=> Mon, 16 Mar 2015 00:00:00 EDT -04:00
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激 :)

timezone ruby-on-rails activesupport

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

为什么范围#包括?比运算符更大或更小的速度慢得多

我有一个哈希数组,键是Date和值Integer.这是一个模拟它的测试代码.

hashes = 2000.times.map do |i|
  [Date.new(2017) - i.days, rand(100)]
end.to_h
Run Code Online (Sandbox Code Playgroud)

我想获得特定时期的价值.起初我写了Range#include?,但它很慢.

Benchmark.measure do
  hashes.select{|k,v| (Date.new(2012,3,3)..Date.new(2012,6,10)).include?(k)}
end

#<Benchmark::Tms:0x007fd16479bed0 @label="", @real=2.9242447479628026, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=2.920000000000016, @total=2.920000000000016>
Run Code Online (Sandbox Code Playgroud)

使用简单的大于或小于运算符,它变得快60倍.

Benchmark.measure do
  hashes.select{|k,v| k >= Date.new(2012,3,3) && k <= Date.new(2012,6,10)}
end

#<Benchmark::Tms:0x007fd162b61670 @label="", @real=0.05436371313408017, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=0.05000000000001137, @total=0.05000000000001137>
Run Code Online (Sandbox Code Playgroud)

我以为这两个表达基本相同.

为什么会有这么大的差异?

ruby activesupport

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

如何使用主动支持核心分机日期和时间

active_support/core_ext/date_and_time/calculations为了什么?分别有/date/time/date_timeDateTimeDateTime。但到底是/date_and_time为了什么?

我尝试使用 require 它而不是date_time,然后我得到了文件中定义的方法的 NoMethodError 。

ruby datetime ruby-on-rails activesupport

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

从数字获取当前1年的数字

从现在开始,明年我怎么办?

1.year.from_now
Run Code Online (Sandbox Code Playgroud)

我需要从上面的代码中得到2019.

ruby activesupport

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

ActiveSupport :: Notifications从内部块访问有效负载

我最近发现了有关ActiveSupport :: Notifications的信息.我认为这是一个监控应用程序的好工具.

我目前正在Rails之外使用它来监控我的Sinatra应用程序,它运行良好.

但是我经常使用它来检测自定义查询,并希望以某种方式通知查询结果:

my_input = "some_query"
ActiveSupport::Notifications.instrument("myapp.create", :input => my_input) do
  #stuff
  result = search_for my_input
  #stuff
  result
end
Run Code Online (Sandbox Code Playgroud)

现在我可以订阅它并且还可以获得已执行的查询(在有效负载哈希中可用).但我也希望在订阅者中看到结果.

那么有没有办法在执行块时向有效负载添加任何自定义值?

ruby notifications activesupport

0
推荐指数
1
解决办法
519
查看次数

ActiveRecord 验证 nil

我正在尝试编写一个允许任何字符串但不允许 nil 的活动记录验证。

validates_presences_of 的问题是它对于我想认为有效的“”或“”返回 false。

我也尝试过 validates_length_of :foo, :minimum => 0 ,但没有成功

我也尝试过 validates_length_of :foo, :minimum => 0, :unless => :nil? 这也不起作用。这两个都允许设置 nil 值并且验证仍然返回 true。

我在这里错过了什么吗?我觉得简单地验证该元素不为零不应该那么困难。

ruby ruby-on-rails activesupport rails-activerecord

0
推荐指数
1
解决办法
8969
查看次数

rails'app文件夹上的Namespaced类

我有以下文件夹结构:

app
??? assets
??? controllers
??? helpers
??? mailers
??? market_adapters
?   ??? german.rb
?...
Run Code Online (Sandbox Code Playgroud)

该文件market_adapters/german.rb是:

module MarketAdapters #(I've also tried naming it singular)
   class German
   end
end
Run Code Online (Sandbox Code Playgroud)

运行测试时,我收到错误:

/gems/activesupport-5.0.0/lib/active_support/dependencies.rb:512:in
`load_missing_constant': Unable to autoload constant German, 
expected .../app/market_adapters/german.rb to define it (LoadError)
Run Code Online (Sandbox Code Playgroud)

添加market_adapters文件夹autoload_paths似乎没有任何效果config.autoload_paths << "#{Rails.root}/app/market_adapters"

如果我移动market_adapterslib文件夹,一切正常.但仍然想拥有它app,任何想法?

顺便说一下,我正在使用Rails 5.

ruby rspec ruby-on-rails activesupport rspec-rails

0
推荐指数
1
解决办法
763
查看次数

为什么Ruby告诉我在场?有价值的时候是假的吗?

我想

arg.present?
Run Code Online (Sandbox Code Playgroud)

是为了检查一个字符串是空的还是零的真相和光,但是我注意到一个令人困惑的情况.如果我的字符串是:

arg = "\t"
Run Code Online (Sandbox Code Playgroud)

我得到了错误的结果:

2.4.0 :003 > arg = "\t"
 => "\t"
2.4.0 :004 > arg.present?
 => false
Run Code Online (Sandbox Code Playgroud)

检查我的字符串参数是空还是零的更简单的方法是什么?当然,我可以写,arg.empty? || arg.nil?但我正在寻找一种更简洁的方式.

ruby string ruby-on-rails activesupport is-empty

0
推荐指数
1
解决办法
158
查看次数