Getting started Architecture Concepts Workflow definition Scheduling workflow Operators Command reference Language API -Ruby Ändern Sie den Einstellungswert für jede Umgebung mit Digdag (RubyOnRails) Stapelimplementierung in RubyOnRails-Umgebung mit Digdag
Laden Sie die Beispielanwendung für das Ruby on Rails-Tutorial herunter https://github.com/yasslab/sample_app
Führen Sie die Beispielanwendung des Ruby on Rails-Lernprogramms aus, um Benutzer und Beiträge zu registrieren. Ich habe einen Testbenutzer erstellt und 4 Beiträge registriert.
Dieses Mal erstellen wir einen einfachen Stapel, der die Anzahl der Beiträge des entsprechenden Benutzers mit dem Benutzernamen als Parameter ausgibt. Es gibt zwei Möglichkeiten, den Stapel zu implementieren und zu starten.
Probieren wir die folgenden zwei Methoden aus, die häufig beim Schreiben der Stapelverarbeitung in Rails verwendet werden. ① Rails Runner: Schreiben Sie einen Stapel als Skript ② Rechenaufgabe: Schreiben Sie einen Stapel als Build-Aufgabe
Ich habe Option Parser verwendet, um die Parameter abzurufen.
/lib/scripts/
Stapelverarbeitungsskript unter hinzugefügt
lib/scripts/post_batch.rb
require 'optparse'
module Scripts
class PostBatch
def initialize
@option = {}
OptionParser.new do |opt|
opt.on('-n VALUE', 'user name') { |v| @option[:name] = v}
opt.parse!(ARGV)
end
end
def count
user = User.find_by(name: @option[:name])
puts "ID: #{user.id}Name:#{user.name}"
puts "Anzahl der Beiträge:#{Micropost.where(user_id: user.id).count}"
end
end
end
Laden Sie Ruby-Dateien automatisch unter lib
config/application.rb
config.autoload_paths += %W(#{config.root}/lib)
rails_runner.dig
+task:
sh>: bundle exe rails runner Scripts::PostBatch.new.count -n 'test'
Die ID, der Name und die Anzahl der Beiträge des Testbenutzers werden ausgegeben.
Ausführungsergebnis
$ digdag run rails_runner.dig --rerun
2020-07-20 19:38:39 +0900 [INFO](0017@[0:default]+rails_runner+task): sh>: bundle exec rails runner Scripts::PostBatch.count 'test'
ID:5 Name: Test
Anzahl der Beiträge: 4
python
$ rails g task task_post
Running via Spring preloader in process 4255
create lib/tasks/tast_post.rake
/lib/tasks/task_post.Eine Rake-Datei wird generiert. Öffnen Sie sie und fügen Sie die folgende Quelle hinzu
#### **`lib/tasks/task_post.rake`**
```rb
namespace :task_post do
desc "Holen Sie sich die Anzahl der Benutzerbeiträge"
task :count, ['name'] => :environment do |task, args|
user = User.find_by(name: args.name)
puts "ID: #{user.id}Name:#{args.name}"
puts "Anzahl der Beiträge:#{Micropost.where(user_id: user.id).count}"
end
end
rake.dig
+task:
sh>: bundle exec rake task_post:count[test4]
Die ID, der Name und die Anzahl der Beiträge des Testbenutzers werden ausgegeben.
Ausführungsergebnis
$ digdag run rake.dig --rerun
2020-07-20 20:04:16 +0900 [INFO](0017@[0:default]+rake+task): sh>: bundle exec rake task_post:count[test]
ID:5 Name: Test
Anzahl der Beiträge: 4
Recommended Posts