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
try_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 ... more
generate_helper
...
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.

