如何为机械化forms添加新字段(ruby / mechanize)

有一个公共类方法可以向机械化表单添加字段 我试过了 .. #login_form.field.new(‘auth_login’,’Login’) #login_form.field.new(‘auth_login’,’Login’) 并且两个都给了我一个错误undefined method “new” for # (NoMethodError) 我尝试了login_form.field.new(‘auth_login’,’Login’)这给了我一个错误 mechanize-0.9.3/lib/www/mechanize/page.rb:13 n `meta’: undefined method `search’ for nil:NilClass (NoMethodError) 但在我提交表格的时候。 该字段在html源代码中不存在。 我想添加它,以便我的脚本发送的POST查询将包含auth_username=myusername&auth_password=mypassword&auth_login=Login到目前为止它只发送auth_username=radek&auth_password=mypassword ,这可能是我无法登录的原因。只是我的想法。 脚本看起来像 require ‘rubygems’ require ‘mechanize’ require ‘logger’ agent = WWW::Mechanize.new {|a| a.log = Logger.new(“loginYOTA.log”) } agent.follow_meta_refresh = true #Mechanize does not follow meta refreshes by default, we need to set […]

Kaminari和Capybara冲突

我似乎在capybara的页面方法和Kaminari的页面方法之间存在某种冲突。 这就是我猜想的,无论如何,这是错误: Failure/Error: before { sign_in_as user } ActionView::Template::Error: wrong number of arguments (1 for 0) # ./app/models/feed.rb:9:in `microposts’ [Rest of the backtrace] 代码示例: class Feed def microposts(opts = { urgent: false }) urgent = opts[:urgent] p Microposts.where(id: 1).page # p Microposts.where(id: 1).page(1) # Error end end 如果我删除分页,测试工作正常。 我不明白这是怎么可能的,我猜Capybara将“页面”方法添加到Object范围,但是当Kaminari将其page方法添加到ActiveRecord :: Base时(如果我没记错),它应该覆盖Capybara的一个。 我没有看到有人遇到这种麻烦,怎么可能? 谢谢。

为什么日期之间的减法返回Rational类型?

我想在日期上执行减法运算。 date_sent = Date.parse(“2013-01-01”) #=> Tue, 01 Jan 2013 date_now = Date.today #=> Wed, 04 Sep 2013 days = (date_now – date_sent) #=> (246/1) 为什么date_now – date_sent返回Rational类型?

RVM安装缺少$ PATH

当我尝试重新安装最新版本的RVM时,RVM向我提供了与缺少或不正确的“$ PATH”变量相关的错误通知。 有谁知道(a)这个变量应该设置为什么,以及(b)如何改变它? 我搜索了几十个主题,但似乎没有人完全引用这个问题。 任何帮助将不胜感激。 谢谢,科迪 Codys-MacBook-Pro:demo_app Cody$ rvm get head && rvm reload ######################################################################## 100.0% Downloading RVM from wayneeseguin branch master Upgrading the RVM installation in /Users/Cody/.rvm/ RVM PATH line found in /Users/Cody/.bashrc /Users/Cody/.zshrc. RVM sourcing line found in /Users/Cody/.bash_profile /Users/Cody/.zprofile. Upgrade Notes: /Users/Cody/.bash_profile:3:export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/Users/Cody/.rvm/bin * WARNING: Above files contains `PATH=` with no `$PATH` […]

Ruby for循环中的最佳实践

我遇到了三种编写循环的方法。 the_count = [1, 2, 3, 4, 5] for循环1 for number in the_count puts “This is count #{number}” end for循环2 the_count.each do |count| puts “The counter is at: #{count}” end for loop 3 the_count.each {|i| puts “I got #{i}”} 是否存在一种方式比另外两种更好的做法或更好的解决方案? 第一个与其他语言最相似,对我来说,第三个看起来不合时宜。

两颗gem共享相同的要求?

我打电话的时候: require ‘retryable’ 这两个gem发生冲突: https://github.com/robertsosinski/retryable https://github.com/carlo/retryable 因为他们都有一个’可重试的’文件,他们要求用户要求。 我对使用第一个gem感兴趣,但这并不总是发生。 此代码作为我自己的gem的一部分执行,并且必须在所有用户之间可靠。 有没有办法特别要求gem(因为gem名称当然不同)? 如何解决此命名冲突? 编辑:澄清一下,这是官方的回购和gem名称实际上是不同的(“retryable-rb”和“carlo-retryable”),但他们都要求他们的用户要求lib / retryable.rb文件require ‘retryable’

在Rails中放置代码片段的位置?

我有这个代码片段,为POST生成签名。 它的细节并不重要,但我想知道的是:因为它不是与模型相关的代码块,它实际上可以在任何地方使用:控制器,模型,视图助手; 甚至在观点中。 因此,我不确定在将其放置在某个位置时如何激活它的使用,甚至更大的问题。 那些“需要”陈述是关于什么的吗? 您可以通过当前正在处理的文件中的“require”语句获取某些function吗? 为了让我们有一个例子可以谈论,比方说,我有一小段代码可以实现Cubing: def cube_it(num) num**3 end 我知道我会在应用程序的各个地方使用它,所以我应该把它放在哪里? 当我确实需要使用它时,我怎么能“召唤”它呢? 谢谢

使用Ruby Test Unit在一个脚本中并行运行多个测试

我在一个ruby脚本中有4个测试,我使用命令运行 ruby test.rb 输出看起来像 Loaded suite test Started …. Finished in 50.326546 seconds. 4 tests, 5 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 我想要实现的是,并行运行所有4个测试而不是顺序测试。 像4个线程一样运行一个测试,有效地将执行时间减少到4个测试中最慢的时间+并行执行的时间很少。 我遇到了这个 ,但这似乎并行运行多个ruby测试文件 – 比如说如果我有test1.rb,test2.rb test3.rb,那么所有三个文件将并行运行。 任何帮助将不胜感激。

机架1.3.2的问题。 您已经激活了机架1.3.2,但您的Gemfile需要机架1.2.3

我有debian的乘客3.0.9,gem机架1.3.2和1.2.1。 使用带有乘客e bundler的rails 3.0应用程序,我有这样的错误: 您已经激活了机架1.3.2,但您的Gemfile需要机架1.2.3。 考虑使用bundle exec。 使用rails 3.1就可以了。 我无法使用rails 3.0启动应用程序,但只能使用3.1。 Passnnger加载第一个机架1.3.2并且不要在捆绑器的gem上装载机架1.2.3

使用tweetstream守护进程写入数据库

我正在尝试将与关键字匹配的所有推文写入我的数据库。 我在tracker.rb设置了以下内容: require ‘rubygems’ require ‘tweetstream’ TweetStream::Daemon.new(‘Bill Gates’,’money’,’Twitter Tracker’).track(‘ladygaga’) do |status| Tweet.new(:content => status.text) end 但没有任何反应。 我在这做错了什么? 提前致谢 更新:我将所有内容放在名为twitter.rake的.rake文件中,然后使用$ rake scrap启动恶魔: task :scrap => :environment do desc “Run Twitter Scraper” TweetStream::Client.new(‘TWITTER_USER’,’TWITTER_PASS’).track(‘ladygaga’) do |status| Tweet.create(:user_id => status.user.id, :user_screen_name => status.user.screen_name, :user_profile_image_url => status.user.profile_image_url, :status_text => status.text, :status_id => status.id) puts “[#{status.user.screen_name}] #{status.text}” end end