删除CSV文件中的空格

我有一个额外的空格字符串: First,Last,Email ,Mobile Phone ,Company,Title ,Street,City,State,Zip,Country, Birthday,Gender ,Contact Type 我想解析这一行并删除空格。 我的代码看起来像: namespace :db do task :populate_contacts_csv => :environment do require ‘csv’ csv_text = File.read(‘file_upload_example.csv’) csv = CSV.parse(csv_text, :headers => true) csv.each do |row| puts “First Name: #{row[‘First’]} \nLast Name: #{row[‘Last’]} \nEmail: #{row[‘Email’]}” end end end

DRY使用nokogiri搜索网站的每个页面

我想搜索网站的每个页面。 我的想法是找到保留在域内的页面上的所有链接,访问它们并重复。 我必须采取措施,不再重复努力。 所以它很容易开始: page = ‘http://example.com’ nf = Nokogiri::HTML(open(page)) links = nf.xpath ‘//a’ #find all links on current page main_links = links.map{|l| l[‘href’] if l[‘href’] =~ /^\//}.compact.uniq “main_links”现在是活动页面中以“/”开头的链接数组(仅应为当前域上的链接)。 从这里我可以将这些链接提供给上面类似的代码,但我不知道确保我不重复自己的最佳方法。 我想我在访问时会开始收集所有访问过的链接: main_links.each do |ml| visited_links = [] #new array of what is visted np = Nokogiri::HTML(open(page + ml)) #load the first main_link visted_links.push(ml) #push the […]

主动资源响应,如何获取它们

我有一个活动资源,我查询数据。 它返回记录,计数,无论我要求什么。 例如:product = Product.find(123) 响应头应该包含一个自定义属性,比如“HTTP_PRODUCT_COUNT = 20”,我想检查响应。 IRB最有效的方法是什么? 我没有奢侈的Rails或其他可能提供底层响应的框架。 我是否需要使用monkeypatched调用或其他东西攻击Net :: HTTP或ActiveResource本身?

耙子流产了! Sass :: SyntaxError:未定义的变量:“$ alert-padding”

我因为我的资产没有编译而陷入了应用程序的生产环境。 我用的时候 rvmsudo bundle exec rake assets:precompile RAILS_ENV=production –trace 它抛出rake aborted! Sass::SyntaxError: Undefined variable: “$alert-padding” rake aborted! Sass::SyntaxError: Undefined variable: “$alert-padding” 这是我的Gemfile: source ‘https://rubygems.org’ gem ‘rails’, ‘4.2.3’ gem ‘mysql2’, ‘~> 0.3.11’ gem ‘jquery-rails’ gem ‘jquery-ui-rails’ gem ‘sass-rails’, ‘~> 5.0’ gem ‘bootstrap-sass’, ‘~> 3.2.0’ gem ‘uglifier’, ‘>= 1.3.0’ gem ‘coffee-rails’, ‘~> 4.1.0’ gem ‘jbuilder’, ‘~> 2.0’ […]

如何点击Mechanize和Nokogiri中的链接?

我正在使用Mechanize来抓取Google Wallet的订单数据。 我正在捕获第一页的所有数据,但是,我需要自动链接到后续页面以获取更多信息。 #purchaseOrderPager-pagerNextButton将移动到下一页,这样我就可以获取更多要捕获的记录。 元素看起来像这样。 我需要点击它继续前进。 但是,当我尝试以下操作时出现错误: next_page = @orders_page.search(“#purchaseOrderPager-pagerNextButton”) next_page.click 错误: undefined method `click’ for # (NoMethodError)

find_or_initialize_by不适用于2列

我正在尝试使用ActiveRecord在我的数据库中插入数据。 当我使用pdays = MyModel.new进行初始化而不是下面的find_or_initialize_by ,脚本运行正常。 但它只运行一次。 我需要每天运行以执行更新。 当我第二次尝试使用pdays = MyModel.new运行脚本时,不会引发重复的键约束。 因此我尝试使用2个参数进行下面的find_or_initialize_by,但这会产生错误: 未定义的方法`find_or_initialize_by’ 2列共同创造了独特的记录: vertica_traffic.each do |vdays| pdays = MyModel.find_or_initialize_by([:local_dt], vdays[:community_id]) pdays[:local_date] = vdays_traffic[:local_d] pdays[:community_id] = vdays_traffic[:community_id] pdays[:uniquesters] = vdays_traffic[:uniques] pdays.save end

为什么触发器操作符包含第二个条件?

以下代码使用触发器操作符。 (1..10).each {|x| print “#{x},” if x==3..x==5 } 为什么结果3,4,5 ? 我认为它应该是3,4 。 正如教程中所提到的,当x == 3时,该表达式变为true,并且在x == 5之前一直为真。 如果评估为假,如何打印’5’? 有人可以请我澄清一下吗?

过滤以从数组中排除元素

尝试过滤数组中的某些条目。 它不能保证它们在主数组中,因此我正在通过迭代进行测试。 total = [‘alpha’, ‘bravo’, ‘charlie’, ‘delta’, ‘echo’] hide = [‘charlie’, ‘echo’] pick = [] for i in total if !hide.include?(i) puts i pick.push(i) end end puts pick 这不起作用。 有没有更好的方法来提供这种filter?

如何使用中间件中的域对象关闭cache_classes?

在rails开发环境中, cache_classes已关闭,因此您可以修改app/下的代码,并在不重新启动服务器的情况下查看更改。 但是,在所有环境中,中间件只创建一次。 所以,如果我有这样的中间件: class MyMiddleware def initialize(app) @app = app end def call(env) env[‘model’] = MyModel.first end end 我在config/environments/development.rb执行此操作: config.cache_classes = false # the default for development config.middleware.use MyMiddleware 然后我总会得到以下错误: A copy of MyMiddleware has been removed from the module tree but is still active! /Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:414:in `load_missing_constant’ /Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:96:in `const_missing’ /Users/me/projects/my_project/lib/my_middleware.rb:8:in `call’ /Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/middleware_stack.rb:72:in `new’ … […]

尝试使用ruby mechanize进行POST

我使用firefox插件LiveHTTPheaders捕获了登录HTTP头。 我发现了以下url和变量。 POST /login email=myemail%40gmail.com&password=something&remember=1&loginSubmit=Login 这是我正在运行的代码: require ‘rubygems’ require ‘mechanize’ browser = Mechanize.new browser.post(‘http://www.mysite.com/login’, [ [“email”,”myemail%40gmail.com”], [“password”,”something”], [“remember”,”1″], [“loginSubmit”,”Login”], [“url”=>””] ] ) do |page| puts page.body end 但是,这没有给我什么! 我的post参数有问题吗?