Tag:

如何使用输入文件名生成Rake的输出文件名?

我有一些输入文件,我想用Ruby编码。 编码的输出应该基于输入文件的文件名匹配某些模式。 为了不手动执行此操作,我想使用Rake作为自动化的帮助。 此外,我不想为每个输入文件指定单个任务。 我已经尝试了一些FileList“魔术”,但它没有成功。 这是代码: desc ‘Create all output from specified input’ task :encode do FileList[‘input/*.txt’].each {|input| file “output/output_#{input}” => input} end 有人可以帮忙吗? 我没有在网上找到任何关于多个输出文件作为依赖项的内容。

如何测试发布请求并跟随capybara重定向?

我正在尝试用水豚和黄瓜测试一个post请求。 我无法访问页面并按下链接发送请求,因为它有一个确认对话框,我没有使用javascript工作,所以我试图使用post方法,然后测试它是否重定向到适当的url但是我得到了: No response yet. Request a page first. (Rack::Test::Error) 我的代码是: page.driver.post url page.driver.status_code.should be 302 follow_redirect! 它一直很好,直到follow_redirect! 。 我试过了page.driver.follow_redirects! 但它也不起作用。 有帮助吗?

无法使用smarter_csv运行rake任务

我创建了一个rake任务,用于导入带有smarter_csv gem的csv。 抛出以下消息,如果有帮助,我添加了整个错误代码: rake import_csv:import_csv Digest::Digest is deprecated; use Digest I, [2017-03-01T11:46:08.551994 #7029] INFO — : ** [Raven] Raven 0.14.0 configured not to send errors. rake aborted! NoMethodError: undefined method `close’ for nil:NilClass /home/my_user/.rvm/gems/ruby-2.1.1@my_app/gems/smarter_csv-1.1.4/lib/smarter_csv/smarter_csv.rb:223:in `ensure in process’ /home/my_user/.rvm/gems/ruby-2.1.1@my_app/gems/smarter_csv-1.1.4/lib/smarter_csv/smarter_csv.rb:223:in `process’ /home/my_user/my_app/lib/tasks/import_csv.rake:7:in `block (2 levels) in ‘ /home/my_user/.rvm/gems/ruby-2.1.1@my_app/bin/ruby_executable_hooks:15:in `eval’ /home/my_user/.rvm/gems/ruby-2.1.1@my_app/bin/ruby_executable_hooks:15:in `’ Errno::ENOENT: No such file or directory […]

rake任务无法访问rails.cache

我想从一个将远程天气数据存储在rails缓存中的cron作业调用rake任务。 但是,我必须在这里做一些非常错误的事情,因为我无法通过无数无结果的搜索找到任何解决方案。 假设我定义并调用此任务 namespace :weather do desc “Store weather from remote source to cache” task :cache do Rails.cache.write(‘weather_data’, Date.today) end end 我收到了错误 Anonymous modules have no name to be referenced by 这让我相信rails缓存不可用。 从rake文件输出Rails.class给了我Module但Rails.cache.class再次返回上面的错误。 我需要在这里加一些东西吗? 我在互联网上绝望吗? 🙂 提前致谢。

使用名称中的数字为列创建迁移

我正在将一个应用程序移植到rails中,并且有几个列被命名为 2nd_phone 2nd_address 当我尝试使用t.string:2nd_phone进行迁移时 我收到语法错误,意外的tINTEGER,期待tSTRING_CONTENT或tSTRING_DBEG或tSTRING_DVAR或tSTRING_END 任何想法如何在rals?

Rails:运行迁移等rake任务

我的开发团队需要更精确地执行rake任务。 某些任务只需在特定代码更改后运行一次。 在没有太具体的情况下,在代码中实现新用户的新业务规则之后,需要更新某些现有用户记录。 我们喜欢迁移如何使用db表进行日志记录。 是否有类似的工具用于rake任务? 我们可以破解Rails’/ ActiveRecord的迁移系统以进行rake任务吗? 我们不希望将与db相关的迁移与rake任务混合在一起,因此任何明确保持这些迁移的解决方案都会很棒。 谢谢。

这个rake db:seed错误意味着什么?

我一直试图解决这个问题几个小时,但我似乎无法理解发生了什么。 我正在使用Rails 3 beta,并希望将一些数据播种到数据库中。 但是,当我尝试通过db:seed播种一些值时,我收到此错误: 耙子流产了! 属性(#81402440)预期,得到数组(#69024170) seeds.rb是: DataType.delete_all DataType.create( :name => ‘String’ ) 我得到了这些课程: class DataType < ActiveRecord::Base has_many :attributes end class Attribute < ActiveRecord::Base belongs_to :data_types end 只是为了澄清,目的是让Attribute对象具有一种数据类型(例如String,Number等)。 虽然DataType的迁移定义仅仅是: class CreateDataTypes < ActiveRecord::Migration def self.up create_table :data_types do |t| t.string :name t.timestamps end end def self.down drop_table :data_types end end 谁能告诉我我做错了什么?

Ruby rake loaderror – 捆绑exec rake无法正常工作

我正在尝试运行命令rake db:migrate但我一直收到此错误: /Users/[name]/.rvm/gems/ruby-2.2.1/bin/rake:23:in `load’: cannot load such file — /Users/[name]/.rvm/rubies/ruby-2.2.1/lib/ruby/gems/2.2.0/specifications/default/bin/rake (LoadError) from /Users/[name]/.rvm/gems/ruby-2.2.1/bin/rake:23:in `’ from /Users/[name]/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval’ from /Users/[name]/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `’ 尝试bundle exec rake db:migrate也给了我同样的错误。 有没有办法可以解决这个问题? (我在Mac OS X 10.10.5上) 编辑:错误中我的[名称]的第一个字母是大写,即使在我的系统中,它是小写的。 编辑[部分解决]:所以我使用Ruby版本2.2.1,我应该使用2.1.2。 虽然这没有解决rake命令错误,但我试图运行在更改我的Ruby版本后成功运行的rails server 。

Rails:为什么在rake任务中调用to_a字符串无效?

我正在尝试为数据库迁移解密一堆密码。 我有一些旧的Rails代码(实际上是一个Runner脚本),可以很好地解密它们。 但是将相同的代码放入Rake任务会导致任务失败,并且…未定义的方法`to_a’代表“secretkey”:String … 为什么在Rake任务中调用字符串上的to_a无效,但在Runner脚本中完全有效? require ‘openssl’ KEY = ‘secretkey’ namespace :import do task :users => :environment do def decrypt_password(pw) cipher = OpenSSL::Cipher::Cipher.new(‘bf-ecb’) cipher.decrypt cipher.key = KEY.to_a.pack(‘H*’) <<——— FAILS RIGHT HERE on to_a data = data.to_a.pack('H*') data = cipher.update(data) data << cipher.final unpad(data) end end … other methods end (Rails 3.0.0,Ruby 1.9.2)

Passenger + Rails 3.1.1 =在任何来源中都找不到rake-0.9.2(Bundler :: GemNotFound)

我知道已经有一些关于这个错误的线程,但没有一个解决了我的问题。 我用rails 3.1.1和RVM Ruby 1.9.2-p180开始了一个新的rails应用程序。 当我使用rails server并转到localhost:3000时它可以工作 但是当我尝试像使用Passenger(OSX pref pane)的其他Rails 3.0.x应用程序一样托管它并在浏览器中访问它时,我收到以下错误: Error message: Could not find rake-0.9.2 in any of the sources (Bundler::GemNotFound) Exception class: PhusionPassenger::UnknownError 还有其他人遇到过rails 3.1.1和乘客的问题吗? 当我输入gem list –local时,我的gem list –local有rake 0.9.2,而且我也在正确的RVM gemset中。 有任何想法吗?