Skip to content

Instantly share code, notes, and snippets.

@tsechingho
Last active August 3, 2017 04:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tsechingho/20cc735ce3e1ad71fa8ed06de3a16020 to your computer and use it in GitHub Desktop.
Save tsechingho/20cc735ce3e1ad71fa8ed06de3a16020 to your computer and use it in GitHub Desktop.
Naming rules

Naming rules

Services

Namespace

  • 請優先以業務類型的複數命名。
  • 在業務類型下,以 3rd party provider 名稱或子業務作細項區分。
/services
  /domain_names
    /godaddy
      /connect_callback_service.rb
    /ssl
      /create_certificate_service.rb
    /check_domain_cname_service.rb
    /check_custom_domain_service.rb

File name

  • 以動詞開頭。
/services
  /images
    /crop_service.rb
  /orders
    /deduct_stock_service.rb
    /process_payment_service.rb

Instance method

  • 檔名為動詞,故一律使用 run 作為執行方式。
::DomainNames::ChangeCanonicalNameService.new(merchant, new_name).run

Jobs

請統一用 ActiveJob 的 DSL 撰寫,避免用 Sidekiq 的 worker 形式。

Namespace

  • 請優先以 3rd party provider 名稱命名。
/jobs
  /salesforce
    /sync_merchant_job.rb
  • 其次以業務類型的複數命名。
/jobs
  /products
    /update_product_images_job.rb

File name

  • 以動詞開頭。
/jobs
  /intercom
    /sync_order_event_job.rb

Instance method

  • DSL 規定一律是定義 perform,執行時則是用 perform_later
::Intercom::SyncProductEventJob.perform_later(current_user.id, Time.zone.now.to_i)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment