{"record":{"id":"cabd4b26dd1b81f4","repo":"bensheldon/good_job","slug":"invalid-cron-format-cron","errorCode":null,"errorMessage":"Invalid cron format: '#{cron}'","messagePattern":"Invalid cron format: '#(.+?)'","errorType":"validation","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"app/models/good_job/cron_entry.rb","lineNumber":64,"sourceCode":"\n      GoodJob::Job\n        .select(\"lateral_jobs.*\")\n        .from(from_clause)\n        .joins(join_clause)\n        .index_by(&:cron_key)\n    end\n\n    def self.find(key, configuration: nil)\n      all(configuration: configuration).find { |entry| entry.key == key.to_sym }.tap do |cron_entry|\n        raise ActiveRecord::RecordNotFound unless cron_entry\n      end\n    end\n\n    def initialize(params = {})\n      @params = params\n\n      return if cron_proc?\n      raise ArgumentError, \"Invalid cron format: '#{cron}'\" unless fugit.instance_of?(Fugit::Cron)\n    end\n\n    def key\n      params.fetch(:key)\n    end\n\n    alias id key\n    alias to_param key\n\n    def job_class\n      params.fetch(:class)\n    end\n\n    def set\n      params[:set]\n    end\n\n    def args","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/bensheldon/good_job/blob/5fcde48f8765e69901ffa9c5a06122b19c73875f/app/models/good_job/cron_entry.rb#L46-L82","documentation":"Error \"Invalid cron format: '#{cron}'\" thrown in bensheldon/good_job.","triggerScenarios":"Thrown at app/models/good_job/cron_entry.rb:64 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the cron string in your `config.good_job.cron` entry is a valid cron expression accepted by fugit (e.g. \"0 * * * *\" or natural forms like \"every day at midnight\").","Check for typos: missing or extra fields, unsupported characters, or out-of-range values (minute 0-59, hour 0-23, day of month 1-31, month 1-12, day of week 0-6).","If you need custom scheduling logic instead of a cron string, pass a `cron_proc` lambda; the format check is skipped for procs.","Test the expression in a Rails console with `Fugit::Cron.parse(your_cron_string)`; it must return a Fugit::Cron instance, not nil."],"exampleFix":"# config/initializers/good_job.rb\nRails.application.configure do\n  config.good_job.cron = {\n    my_task: {\n      # was \"0 0 * *\" (too few fields) or another invalid expression\n      cron: \"0 0 * * *\",\n      class: \"MyJob\"\n    }\n  }\nend","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5fcde48f8765e69901ffa9c5a06122b19c73875f","analyzedAt":"2026-08-23T14:55:11.399Z","schemaVersion":2},"datasetVersion":"2026-08-23T16:17:53.355Z"}