Help mij een Ruby-script te schrijven voor gegevensverwerking
description
Met deze prompt krijg je een concreet en toepasbaar Ruby-script dat precies aansluit op jouw gegevensverwerkingstaak. Het bespaart je programmeertijd, helpt je best practices toe te passen en maakt het gemakkelijker om automatisering in Ruby te implementeren.
prompt
Schrijf een Ruby-script dat de volgende taak uitvoert: <beschrijf de taak of het probleem in detail>. Gebruik hierbij de volgende inputgegevens: <voer d ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een Ruby-script dat aan uw wensen voldoet. Het leest een CSV-bestand, filtert alle actieve gebruikers (bijvoorbeeld waarbij de kolom 'status' op 'actief' staat) en schrijft deze naar een nieuw CSV-bestand. Het script is leesbaar, efficiënt en volgt best practices:
```ruby
require 'csv'
# Definieer de bestandsnamen
input_bestand = 'gebruikers.csv'
output_bestand = 'actieve_gebruikers.csv'
# Filter actieve gebruikers
actieve_gebruikers = CSV.read(input_bestand, headers: true).select do |rij|
rij['status'].to_s.downcase == 'actief'
end
# Schrijf de gefilterde gebruikers naar een nieuw bestand
CSV.open(output_bestand, 'w', headers: actieve_gebruikers.first.headers, write_headers: true) do |csv|
actieve_gebruikers.each do |rij|
csv << rij
end
end
puts "Filtered #{actieve_gebruikers.size} actieve gebruikers naar #{output_bestand}."
```
**Toelichting:**
- Gebruik van de `csv`-bibliotheek voor eenvoudige CSV-verwerking.
- Lees het invoerbestand met headers.
- Filter de rijen op basis van de 'status'-waarde, zorgt voor case-insensitive vergelijking.
- Schrijf de gefilterde gegevens naar een nieuw bestand met dezelfde headers.
- Duidelijke variabele namen en eenvoudige structuur.
U kunt de bestandsnamen aanpassen naar uw situatie. Zorg dat het CSV-bestand aanwezig is in dezelfde directory als dit script, of geef het juiste pad op.
provider: deepseek
model: deepseek-chat
```ruby
require 'csv'
# Definieer bestandsnamen
input_bestand = 'gebruikers.csv'
output_bestand = 'actieve_gebruikers.csv'
begin
# Lees en verwerk CSV-bestand
actieve_gebruikers = CSV.read(input_bestand, headers: true)
.select { |rij| rij['status']&.downcase == 'actief' }
# Schrijf resultaten naar nieuw CSV-bestand
CSV.open(output_bestand, 'w') do |csv|
# Schrijf kopregel
csv << ['naam', 'email', 'status']
# Schrijf alle actieve gebruikers
actieve_gebruikers.each do |gebruiker|
csv << [gebruiker['naam'], gebruiker['email'], gebruiker['status']]
end
end
puts "Succesvol #{actieve_gebruikers.size} actieve gebruikers opgeslagen in #{output_bestand}"
rescue Errno::ENOENT
puts "Fout: Bestand #{input_bestand} niet gevonden."
rescue CSV::MalformedCSVError
puts "Fout: Ongeldig CSV-formaat in #{input_bestand}."
rescue StandardError => e
puts "Er is een onverwachte fout opgetreden: #{e.message}"
end
```
**Uitleg van de gebruikte best practices:**
1. **Foutafhandeling**: Gebruik van `begin/rescue` voor robuuste error handling
2. **Method chaining**: Leesbare aaneenschakeling van methoden
3. **Headers gebruiken**: Werkt met kolomnamen i.p.v. indexen voor betere leesbaarheid
4. **Case-insensitive check**: `.downcase` zorgt dat 'Actief', 'actief', etc. allemaal werken
5. **Safe navigation operator**: `&.` voorkomt nil errors
6. **Descriptieve variabelen**: Duidelijke namen voor betere leesbaarheid
7. **Headers behouden**: Kopregel wordt mee geschreven naar output bestand
**Gebruik:**
- Plaats dit script in dezelfde map als je `gebruikers.csv` bestand
- Voer uit met: `ruby scriptnaam.rb`
- Resultaat wordt opgeslagen in `actieve_gebruikers.csv`
Zorg ervoor dat je CSV-bestand de juiste kolomnamen heeft en de statuswaarden consistent zijn.