在Ruby中筛选Eratosthenes

而不是从网上抓取这个算法的Ruby版本,我想根据它的描述在这里创建我自己的。 但是我无法弄清楚两件事 def primeSieve(n) primes = Array.new for i in 0..n-2 primes[i] = i+2 end index = 0 while Math.sqrt(primes.last).ceil > primes[index] (primes[index] ** 2).step(primes.length – 1, primes[index]) {|x| x % primes[index] == 0 ? primes.delete(x) : “”} index += 1 end primes end 为什么它不迭代到数组的末尾? 根据上面链接中的描述,当数组中最后一个元素的平方根大于当前素数时,应该打破循环 – 我之前做过这个。 我很确定它与修改数组长度的删除操作有关。 例如,当我输入n = 10时,我的函数当前产生2,3,5,7,9,10,这显然是不正确的。 关于我如何改变它以使它像它应该的那样工作的任何建议?

ActiveRecord :: Relation对象如何调用类方法

ActiveRecord :: Relation对象如何调用类方法? class Project < ActiveRecord::Base has_many :tasks end class Task < ActiveRecord::Base belongs_to :project def self.initial_tasks # class methods # here return initial tasks end end 现在我们可以打电话: Project.first.tasks.initial_tasks # how it works initial_tasks是一个类方法,我们不能在对象上调用类方法。 Project.first.tasks返回一个ActiveRecord :: Relation对象,那么它怎么能调用initial_tasks呢? 请解释。

Ruby Regex错误:不兼容的编码regexp匹配(ASCII-8BIT regexp与UTF-8字符串)

我有两个错误,都围绕编码和两者相关。 我在启动WEBrick时遇到的第一个错误(技术上是警告): /Users/USERNAME/example/config/initializers/bb-ruby.rb:54: warning: invalid Unicode Property \P: /\:\-?\P/ 它指的是: /\:\-?\P/, 这只是一些正则表达式,最终是这个块的一部分: @@tags[‘Razzing’] = [ /\:\-?\P/, ”, ‘Razzing’, ‘:P’, :razzing] 然后,我在解析一些字符串时也会得到以下错误(可能是由于同一行)… Encoding::CompatibilityError incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string) 我正在运行Ruby 1.9.2和Rails 3.2.1。

从xml名称值转换为简单哈希

我不知道这是什么名字,这使我的搜索变得复杂。 我的数据文件OX.session.xml是(旧的?)forms FE5E27A056944FBFBEF047F2B99E0BF6 8228-5500 967454 那个XML数据格式到底是什么? 无论如何,我想要的是在我的Ruby代码中最终得到一个哈希,如下所示: CAppLogin = { :SessionID => “FE5E27A056944FBFBEF047F2B99E0BF6”, :AccountNum => “8228-5500”, etc. } # Doesn’t have to be called CAppLogin as in the file, may be fixed 什么可能是最短的,最内置的Ruby方式来自动化哈希读取,我可以更新SessionID值并将其轻松存储回文件以供以后的程序运行? 我玩过YAML,REXML但是还不想打印我的(坏)示例试验。

有没有办法Rails 3.0.x可以默认使用Thin?

我为我的开发/测试环境中的每个应用程序运行Thin webserver。 当我使用Mongrel和Rails 2.x时,我只需要输入script/server来运行我选择的网络服务器。 但是使用Rails 3,我必须每次都指定Thin。 有没有办法让我的Rails应用程序只需输入rails s而不是rails s thin就可以运行Thin?

Rails I18n通过数据库列

我有一个遗留数据库表,其中包含name_en和name_es列,并且想知道在ActiveRecord中根据用户的i18n首选项进行翻译的最佳方法是什么。 我在Rails中看到的i18n实现更倾向于将翻译存储在单独的散列或表中,但我不想改变数据库的结构。 目前在旧的PHP应用程序中,我向mysql查询发送一个参数来替换name_en并返回name_en或name_es AS name以便在我调用行的id时显示。

无法安装pg gem

试图安装pg gem会给我带来错误。 我正在使用使用rbenv / ruby​​-build构建的Ruby 1.9.3-p125。 我使用一键安装程序安装了PostgreSQL。 我可以使用pgAdmin连接到数据库。 我的想法已经不多了。 % gem install pg ~ Building native extensions. This could take a while… ERROR: Error installing pg: ERROR: Failed to build gem native extension. /Users/sandropadin/.rbenv/versions/1.9.3-p125/bin/ruby extconf.rb checking for pg_config… yes Using config values from /usr/bin/pg_config checking for libpq-fe.h… yes checking for libpq/libpq-fs.h… yes checking for pg_config_manual.h… […]

安装Bundler时出错

我正在尝试在我的Mac上安装Bundler gem。 使用命令: sudo gem install bundler我收到以下错误: ERROR: Could not find a valid gem ‘bundler’ (>= 0), here is why: Unable to download data from https://rubygems.org/ – SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://s3.amazonaws.com/production.s3.rubygems.org/latest_specs.4.8.gz) 它显然似乎是一个服务器问题,但我该如何解决这个问题呢? gem update –system目前是最新的。 有没有其他方法可以获得Bundler?

究竟“config.assets.debug”设置到底是什么?

我已经开始开发简单的rails应用程序了。 经过几个小时的工作后,我注意到删除的css仍以某种方式应用于网页。 为了解决这个问题,我多次执行了以下操作: 停止/启动服务器 使用rails服务器 使用扭矩箱服务器 删除浏览器缓存 但没有变化。 这很奇怪 – 新的css定义已经应用,但我删除的那些仍然存在。 所以,我放弃了,决定创建新项目。 我已经设置了新项目(它的脚手架与第一个脚手架相同),当我打开其中一个视图时,旧项目的样式也被应用了。 我决定再次查看http://guides.rubyonrails.org/asset_pipeline.html并找出该设置 #Expands the lines which load the assets config.assets.debug = false 解决了这个问题。 但这个选项究竟做了什么呢? 当这是真的时,为什么旧​​的项目css被应用?

通过访问原始文件覆盖rails帮助程序

我想使用rails熟悉的助手,但function略有改变。 我看待它的方式,我希望能够做到这样的事情: module AwesomeHelper #… create alias of stylesheet_link_tag to old_stylesheet_link_tag def stylesheet_link_tag(*args) if @be_awesome awesome_stylesheet_link_tag *args else old_stylesheet_link_tag *args end end end 我看到它的方式,我有三个选择: 猴子修补:重新打开rails helper模块。 如果rails团队改变了他们的帮助器模块的名称,我的代码就变成了脆弱的来源。 不是不可克服的,但并不理想。 使用不同的方法名称:试图坚持共轨接口可能是我的垮台。 我的更改可能会成为其他开发人员混淆的根源 分离方法(新):不确定这是否有效,或者它是否会有与1相同的缺点。研究这个,但这可能是一个很好的起点。 所以这里的问题是,我是否坚持使用其中一种次优解决方案,还是有其他方式我没有考虑过? 如果我选择选项3,有没有办法在不直接寻址rails helper模块的情况下执行此操作? (注意:我删除了上下文,因为它没有添加任何问题。)