{"id":15502151,"url":"https://github.com/sungwoncho/pattern_generator","last_synced_at":"2025-10-06T16:03:58.491Z","repository":{"id":33537156,"uuid":"37183278","full_name":"sungwoncho/pattern_generator","owner":"sungwoncho","description":"The missing Rails generator for patterns","archived":false,"fork":false,"pushed_at":"2017-08-13T03:46:03.000Z","size":64,"stargazers_count":16,"open_issues_count":2,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-17T13:31:42.910Z","etag":null,"topics":["cli","generator","rails"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sungwoncho.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-10T07:52:42.000Z","updated_at":"2018-10-27T15:51:05.000Z","dependencies_parsed_at":"2022-08-03T15:18:30.961Z","dependency_job_id":null,"html_url":"https://github.com/sungwoncho/pattern_generator","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sungwoncho%2Fpattern_generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sungwoncho%2Fpattern_generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sungwoncho%2Fpattern_generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sungwoncho%2Fpattern_generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sungwoncho","download_url":"https://codeload.github.com/sungwoncho/pattern_generator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250330534,"owners_count":21412993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","generator","rails"],"created_at":"2024-10-02T09:08:29.216Z","updated_at":"2025-09-24T16:20:27.570Z","avatar_url":"https://github.com/sungwoncho.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pattern Generator [![Build Status](https://travis-ci.org/sungwoncho/pattern_generator.svg?branch=master)](https://travis-ci.org/sungwoncho/pattern_generator)\n\nPattern Generator lets you generate various Rails patterns and tests with a single\ncommand.\n\n\n## Install\n\nIn your Gemfile, add the gem in the development group.\n\n```ruby\ngem 'pattern_generator', group: :development\n```\n\nRun `bundle install` to install the gem.\n\nNow you are ready to rock the pattern generator!\n\n\n## Usage\n\n```\nrails generate [PATTERN_TYPE] [YOUR_FILE_NAME (in snake_case)]\n```\n\nCurrently, PATTERN_TYPE can be:\n\n* Service\n* Policy\n* PORO (Plain Old Ruby Object)\n* Form\n\nDestroy command is also supported.\n\n\n## Examples\n\nHere are usage examples with commands and generated files.\n\n### Service\n\n```\nrails generate service find_match\n```\n\ngenerates:\n\n\n*app/services/find_match_service.rb*\n```ruby\nclass FindMatchService\n  def initialize\n\n  end\nend\n```\n\n*spec/services/find_match_service_spec.rb*\n```ruby\nrequire 'rails_helper'\n\nRSpec.describe FindMatchService, type: :service do\n  describe '#call' do\n    pending \"Add some tests to #{__FILE__}\"\n  end\nend\n```\n\n### Policy\n\n```\nrails generate policy voting\n```\n\ngenerates:\n\n\n*app/policies/voting_policy.rb*\n```ruby\nclass VotingPolicy\n  def initialize\n\n  end\nend\n```\n\n*spec/policies/voting_policy_spec.rb*\n```ruby\nrequire 'rails_helper'\n\nRSpec.describe VotingPolicy, type: :policy do\n  describe '#policy_method' do\n    pending \"Add some tests to #{__FILE__}\"\n  end\nend\n```\n\n### PORO (Plain Old Ruby Object)\n\na minimalistic non-ActiveRecord model that can be customized to fit your needs\n\n```\nrails generate poro payment_gateway\n```\n\ngenerates:\n\n\n*app/models/payment_gateway.rb*\n```ruby\nclass PaymentGateway\n  def initialize\n\n  end\nend\n\n```\n\n*spec/policies/payment_gateway_spec.rb*\n```ruby\nrequire 'rails_helper'\n\nRSpec.describe PaymentGateway do\n  describe 'something' do\n    pending \"Add some tests to #{__FILE__}\"\n  end\nend\n\n```\n\n\n## Options\n\n* `--minitest`\n  * Will create your test files inside test folder. \n* DEFAULT: `--rspec`\n  * Will create your test files inside spec folder.\n\n* Usage: `rails generate service subscribe_user --minitest`\n\n\n## Where can I learn about more patterns?\n\n* [7 Patterns to Refactor Fat ActiveRecord Models](http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/)\n\nFeel free to add good blog articles or tutorials here.\n\n\n## Contributing\n\nKnow your patterns? Open a pull request!\n\nThis project respects the [contributor code of conduct](https://github.com/sungwoncho/pattern_generator/blob/master/code_of_conduct.md).\n\n\n## License\n\nThis project rocks and uses MIT-LICENSE.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsungwoncho%2Fpattern_generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsungwoncho%2Fpattern_generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsungwoncho%2Fpattern_generator/lists"}