{"id":13647588,"url":"https://github.com/technicalpickles/jeweler","last_synced_at":"2025-10-24T07:54:01.256Z","repository":{"id":440089,"uuid":"62023","full_name":"technicalpickles/jeweler","owner":"technicalpickles","description":"Opinionated tool for creating and managing Rubygem projects","archived":false,"fork":false,"pushed_at":"2021-01-03T03:53:29.000Z","size":1462,"stargazers_count":1478,"open_issues_count":20,"forks_count":163,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-10-13T18:57:58.452Z","etag":null,"topics":[],"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/technicalpickles.png","metadata":{"files":{"readme":"README.markdown","changelog":"ChangeLog.markdown","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2008-10-12T03:23:00.000Z","updated_at":"2025-10-02T22:53:20.000Z","dependencies_parsed_at":"2022-07-04T16:30:29.951Z","dependency_job_id":null,"html_url":"https://github.com/technicalpickles/jeweler","commit_stats":null,"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"purl":"pkg:github/technicalpickles/jeweler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fjeweler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fjeweler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fjeweler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fjeweler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/technicalpickles","download_url":"https://codeload.github.com/technicalpickles/jeweler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fjeweler/sbom","scorecard":{"id":872070,"data":{"date":"2025-08-11","repo":{"name":"github.com/technicalpickles/jeweler","commit":"2ab86309fc2494ba2a4e9c86c514742cd4f681c2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":2,"reason":"Found 5/24 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 11 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"64 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-j6gc-792m-qgm2","Warn: Project is vulnerable to: GHSA-pj73-v5mw-pm9j","Warn: Project is vulnerable to: GHSA-jxhc-q857-3j6g","Warn: Project is vulnerable to: GHSA-69p6-wvmq-27gg","Warn: Project is vulnerable to: GHSA-pfpr-3463-c6jh","Warn: Project is vulnerable to: GHSA-pphf-gfrm-v32r","Warn: Project is vulnerable to: GHSA-jphg-qwrw-7w9g","Warn: Project is vulnerable to: GHSA-242x-7cm6-4w8j","Warn: Project is vulnerable to: GHSA-286v-pcf5-25rc","Warn: Project is vulnerable to: GHSA-2qc6-mcvw-92cw","Warn: Project is vulnerable to: GHSA-2rr5-8q37-2w7h","Warn: Project is vulnerable to: GHSA-353f-x4gh-cqq8","Warn: Project is vulnerable to: GHSA-4hm9-844j-jmxp","Warn: Project is vulnerable to: GHSA-59gp-qqm7-cw4j","Warn: Project is vulnerable to: GHSA-5w6v-399v-w3cc","Warn: Project is vulnerable to: GHSA-6qvp-r6r3-9p7h","Warn: Project is vulnerable to: GHSA-7553-jr98-vx47","Warn: Project is vulnerable to: GHSA-7rrm-v45f-jp64","Warn: Project is vulnerable to: GHSA-882p-jqgm-f45g","Warn: Project is vulnerable to: GHSA-cf46-6xxh-pc75","Warn: Project is vulnerable to: GHSA-cgx6-hpwq-fhv5","Warn: Project is vulnerable to: GHSA-cr5j-953j-xw5p","Warn: Project is vulnerable to: GHSA-crjr-9rc5-ghw8","Warn: Project is vulnerable to: GHSA-fq42-c5rg-92c2","Warn: Project is vulnerable to: GHSA-gx8x-g87m-h5q6","Warn: Project is vulnerable to: GHSA-jc36-42cf-vqwj","Warn: Project is vulnerable to: GHSA-jw9f-hh49-cvp9","Warn: Project is vulnerable to: GHSA-mrxw-mxhj-p664","Warn: Project is vulnerable to: GHSA-pxvg-2qj5-37jq","Warn: Project is vulnerable to: GHSA-qxcg-xjjg-66mj","Warn: Project is vulnerable to: GHSA-r58r-74gx-6wx3","Warn: Project is vulnerable to: GHSA-r95h-9x8f-r3f7","Warn: Project is vulnerable to: GHSA-v4f8-2847-rwm7","Warn: Project is vulnerable to: GHSA-v6gp-9mmm-c6p5","Warn: Project is vulnerable to: GHSA-vmfx-gcfq-wvm2","Warn: Project is vulnerable to: GHSA-vr8q-g5c7-m54m","Warn: Project is vulnerable to: GHSA-vvfq-8hwr-qm4m","Warn: Project is vulnerable to: GHSA-x7rv-cr6v-4vm4","Warn: Project is vulnerable to: GHSA-xc9x-jj77-9p9j","Warn: Project is vulnerable to: GHSA-xh29-r2w5-wx8m","Warn: Project is vulnerable to: GHSA-xxx9-3xcr-gjj3","Warn: Project is vulnerable to: GHSA-22f2-v57c-j9cx","Warn: Project is vulnerable to: GHSA-3h57-hmj3-gj3p","Warn: Project is vulnerable to: GHSA-54rr-7fvw-6x8f","Warn: Project is vulnerable to: GHSA-5f9h-9pjv-v6j7","Warn: Project is vulnerable to: GHSA-5r2p-j47h-mhpg","Warn: Project is vulnerable to: GHSA-65f5-mfpf-vfhj","Warn: Project is vulnerable to: GHSA-7g2v-jj9q-g3rg","Warn: Project is vulnerable to: GHSA-7wqh-767x-r66v","Warn: Project is vulnerable to: GHSA-8cgq-6mh2-7j6v","Warn: Project is vulnerable to: GHSA-93pm-5p5f-3ghx","Warn: Project is vulnerable to: GHSA-c6qg-cjj8-47qp","Warn: Project is vulnerable to: GHSA-gjh7-p2fx-99vx","Warn: Project is vulnerable to: GHSA-hrqr-hxpp-chr3","Warn: Project is vulnerable to: GHSA-hxqx-xwvh-44m2","Warn: Project is vulnerable to: GHSA-j6w9-fv6q-3q52","Warn: Project is vulnerable to: GHSA-rqv2-275x-2jq5","Warn: Project is vulnerable to: GHSA-vpfw-47h7-xj4g","Warn: Project is vulnerable to: GHSA-wq4h-7r42-5hrr","Warn: Project is vulnerable to: GHSA-xj5v-6v4g-jfw6","Warn: Project is vulnerable to: GHSA-jppv-gw3r-w3q8","Warn: Project is vulnerable to: GHSA-ggxm-pgc9-g7fp","Warn: Project is vulnerable to: GHSA-8mq4-9jjh-9xrc","Warn: Project is vulnerable to: GHSA-xfhh-rx56-rxcr"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T04:35:22.245Z","repository_id":440089,"created_at":"2025-08-24T04:35:22.246Z","updated_at":"2025-08-24T04:35:22.246Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279032949,"owners_count":26089390,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-08-02T01:03:39.836Z","updated_at":"2025-10-24T07:54:01.219Z","avatar_url":"https://github.com/technicalpickles.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"*Jeweler maintenance has now shifted to Fred Mitchell*. I am now maintaining both Jeweler and its fork, juwelier. I will keep Jeweler at least functional with the latest Ruby releases, but put new features in Juwelier. Your input on this is more than welcome.\n\n# Jeweler: Craft the perfect RubyGem\n\n[![Join the chat at https://gitter.im/technicalpickles/jeweler](https://badges.gitter.im/technicalpickles/jeweler.svg)](https://gitter.im/technicalpickles/jeweler?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nJeweler provides the noble ruby developer with two primary features:\n\n * a library for managing and releasing RubyGem projects\n * a scaffold generator for starting new RubyGem projects\n\nPLEASE NOTE that if you are starting afresh, please use the successor [Juwelier](https://github.com/flajann2/juwelier)\nI (Fred Mitchell, flajann2) will be maintaining both Jeweler and Juwelier, but will be adding new features to\nJuwelier, and eventually \"merge\" this one into Juwelier after some namespace issues\nare dealt with.\n\n[![Build Status](https://travis-ci.org/technicalpickles/jeweler.png)](https://travis-ci.org/technicalpickles/jeweler)\n[![Coverage Status](https://coveralls.io/repos/technicalpickles/jeweler/badge.png)](https://coveralls.io/r/technicalpickles/jeweler)\n[![Dependency Status](https://www.versioneye.com/ruby/jeweler/2.0.0/badge.png)](https://www.versioneye.com/ruby/jeweler/2.0.0)\n[![Code Climate](https://codeclimate.com/github/technicalpickles/jeweler/badges/gpa.svg)](https://codeclimate.com/github/technicalpickles/jeweler)\n\n## Hello, world\n\nUse RubyGems to install the heck out of jeweler to get started:\n\n    $ gem install jeweler\n\nWith jeweler installed, you can use the `jeweler` command to generate a new project. For the most basic use, just give it a name:\n\n    $ jeweler hello-gem\n\nThis requires some Git configuration (like name, email, GitHub account, etc), but `jeweler` will prompt along the way.\n\nYour new `hello-gem` gem is ready in the `hello-gem` directory. Take a peek, and you'll see several files and directories\n\n * `Rakefile` setup for jeweler, running tests, generating documentation, and releasing to [rubygems.org](http://rubygems.org/)\n * `README.rdoc` with contribution guidelines and copyright info crediting you\n * `LICENSE` with the MIT licensed crediting you\n * `Gemfile` with development dependencies filled in\n * `lib/hello-gem.rb` waiting for you to code\n * `test/` containing a (failing) shoulda test suite [shoulda](http://github.com/thoughtbot/shoulda)\n\n\n### More `jeweler` options\n\nThe `jeweler` command supports a lot of options. Mostly, they are for generating baked in support for this test framework, or that.\n\nCheck out `jeweler --help` for the most up to date options.\n\n## Hello, rake tasks\n\nBeyond just editing source code, you'll be interacting with your gem using `rake` a lot. To see all the tasks available with a brief description, you can run:\n\n    $ rake -T\n\nYou'll need a version before you can start installing your gem locally. The easiest way is with the `version:write` Rake task. Let's imagine you start with 0.1.0\n\n    $ rake version:write MAJOR=0 MINOR=1 PATCH=0\n\nYou can now go forth and develop, now that there's an initial version defined. Eventually, you should install and test the gem:\n\n    $ rake install\n\nThe `install` rake task builds the gem and `gem install`s it. You're all set if you're using [RVM](http://rvm.beginrescueend.com/), but you may need to run it with sudo if you have a system-installed ruby:\n\n    $ sudo rake install\n\n### Releasing\n\nAt last, it's time to [ship it](http://shipitsquirrel.github.com/)! Make sure you have everything committed and pushed, then go wild:\n\n    $ rake release\n\nThis will automatically:\n\n * Generate `hello-gem.gemspec` and commit it\n * Use `git` to tag `v0.1.0` and push it\n * Build `hello-gem-0.1.0.gem` and push it to [rubygems.org](http://rubygems.org/gems/)\n\n`rake release` accepts REMOTE(default: `origin`), LOCAL_BRANCH(default: `master`), REMOTE_BRANCH(default: `master`) and BRANCH(default: master)as options.\n\n    $ rake release REMOTE=upstream LOCAL_BRANCH=critical-security-fix REMOTE_BRANCH=v3\n\nThis will tag and push the commits on your local branch named `critical-security-fix` to branch named `v3` in remote named `upstream` (if you have commit rights\non `upstream`) and release the gem.\n\n    $ rake release BRANCH=v3\n\nIf both remote and local branches are the same, use `BRANCH` option to simplify.\nThis will tag and push the commits on your local branch named `v3` to branch named `v3` in remote named `origin` (if you have commit rights\non `origin`) and release the gem.\n\n### Version bumping\n\nIt feels good to release code. Do it, do it often. But before that, bump the version. Then release it. There's a few ways to update the version:\n\n    # version:write like before\n    $ rake version:write MAJOR=0 MINOR=3 PATCH=0\n\n    # bump just major, ie 0.1.0 -\u003e 1.0.0\n    $ rake version:bump:major\n\n    # bump just minor, ie 0.1.0 -\u003e 0.2.0\n    $ rake version:bump:minor\n\n    # bump just patch, ie 0.1.0 -\u003e 0.1.1\n    $ rake version:bump:patch\n\nThen it's the same `release` we used before:\n\n    $ rake release\n\n## Customizing your gem\n\nIf you've been following along so far, your gem is just a blank slate. You're going to need to make it colorful and full of metadata.\n\nYou can customize your gem by updating your `Rakefile`. With a newly generated project, it will look something like this:\n\n    require 'jeweler'\n    Jeweler::Tasks.new do |gem|\n      # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options\n      gem.name = \"whatwhatwhat\"\n      gem.summary = %Q{TODO: one-line summary of your gem}\n      gem.description = %Q{TODO: longer description of your gem}\n      gem.email = \"josh@technicalpickles.com\"\n      gem.homepage = \"http://github.com/technicalpickles/whatwhatwhat\"\n      gem.authors = [\"Joshua Nichols\"]\n    end\n    Jeweler::RubygemsDotOrgTasks.new\n\nIt's crucial to understand the `gem` object is just a Gem::Specification. You can read up about it at [guides.rubygems.org/specification-reference](http://guides.rubygems.org/specification-reference/). This is the most basic way of specifying a gem, Jeweler-managed or not. Jeweler just exposes this to you, in addition to providing some reasonable defaults, which we'll explore now.\n\n### Project information\n\n    gem.name = \"whatwhatwhat\"\n\nEvery gem has a name. Among other things, the gem name is how you are able to `gem install` it. [Reference](http://guides.rubygems.org/specification-reference/#name)\n\n    gem.summary = %Q{TODO: one-line summary of your gem}\n\nThis is a one line summary of your gem. This is displayed, for example, when you use `gem list --details` or view it on [rubygems.org](http://rubygems.org/gems/).\n\n    gem.description = %Q{TODO: longer description of your gem}\n\nDescription is a longer description. Scholars ascertain that knowledge of where the description is used was lost centuries ago.\n\n    gem.email = \"josh@technicalpickles.com\"\n\nThis should be a way to get a hold of you regarding the gem.\n\n    gem.homepage = \"http://github.com/technicalpickles/whatwhatwhat\"\n\nThe homepage should have more information about your gem. The jeweler generator guesses this based on the assumption your code lives on [GitHub](http://github.com/), using your Git configuration to find your GitHub username. This is displayed by `gem list --details` and on rubygems.org.\n\n    gem.authors = [\"Joshua Nichols\"]\n\nHey, this is you, the author (or me in this case). The `jeweler` generator also guesses this from your Git configuration. This is displayed by `gem list --details` and on rubygems.org.\n\n### Files\n\nThe quickest way to add more files is to `git add` them. Jeweler uses your Git repository to populate your gem's files by including added and committed and excluding `.gitignore`d. In most cases, this is reasonable enough.\n\nIf you need to tweak the files, that's cool. Jeweler populates `gem.files` as a `Rake::FileList`. It's like a normal array, except you can `include` and `exclude` file globs:\n\n    gem.files.exclude 'tmp' # exclude temporary directory\n    gem.files.include 'lib/foo/bar.rb' # explicitly include lib/foo/bar.rb\n\nIf that's not enough, you can just set `gem.files` outright\n\n    gem.files = Dir.glob('lib/**/*.rb')\n\n### Dependencies\n\nDependencies let you define other gems that your gem needs to function. `gem install your-gem` will install your-gem's dependencies along with it, and when you use your-gem in an application, the dependencies will be made available. Use `gem.add_dependency` to register them. [Reference](http://guides.rubygems.org/specification-reference/#add_development_dependency)\n\n    gem.add_dependency 'nokogiri'\n\nThis will ensure a version of `nokogiri` is installed, but it doesn't require anything more than that. You can provide extra args to be more specific:\n\n    gem.add_dependency 'nokogiri', '= 1.2.1' # exactly version 1.2.1\n    gem.add_dependency 'nokogiri', '\u003e= 1.2.1' # greater than or equal to 1.2.1, ie, 1.2.1, 1.2.2, 1.3.0, 2.0.0, etc\n    gem.add_dependency 'nokogiri', '\u003e= 1.2.1', '\u003c 1.3.0' # greater than or equal to 1.2.1, but less than 1.3.0\n    gem.add_dependency 'nokogiri', '~\u003e 1.2.1' # same thing, but more concise\n\nWhen specifying which version is required, there's a bit of the condunrum. You want to allow the most versions possible, but you want to be sure they are compatible. Using `\u003e= 1.2.1` is fine most of the time, except until the point that 2.0.0 comes out and totally breaks backwards the API. That's when it's good to use `~\u003e 1.2.1`, which requires any version in the `1.2` family, starting with `1.2.1`.\n\n### Executables\n\nExecutables let your gem install shell commands. Just put any executable scripts in the `bin/` directory, make sure they are added using `git`, and Jeweler will take care of the rest.\n\nWhen you need more finely grained control over it, you can set it yourself:\n\n    gem.executables = ['foo'] # note, it's the file name relative to `bin/`, not the project root\n\n### Versioning\n\nWe discussed earlier how to bump the version. The rake tasks are really just convience methods for manipulating the `VERSION` file. It just contains a version string, like `1.2.3`.\n\n`VERSION` is a convention used by Jeweler, and is used to populate `gem.version`. You can actually set this yourself, and Jeweler won't try to override it:\n\n    gem.version = '1.2.3'\n\nA common pattern is to have this in a version constant in your library. This is convenient, because users of the library can query the version they are using at runtime.\n\n    # in lib/foo/version.rb\n    class Foo\n      module Version\n        MAJOR = 1\n        MINOR = 2\n        PATCH = 3\n        BUILD = 'pre3'\n\n        STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')\n      end\n    end\n\n    # in Rakefile\n    require 'jeweler'\n    require './lib/foo/version.rb'\n    Jeweler::Tasks.new do |gem|\n      # snip\n      gem.version = Foo::Version::STRING\n    end\n\n### Rake tasks\n\nJeweler lives inside of Rake. As a result, they are dear friends. But, that friendship doesn't interfere with typical Rake operations.\n\nThat means you can define your own namespaces, tasks, or use third party Rake libraries without cause for concern.\n\n## Contributing to Jeweler\n\n* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet\n* Ask on the [mailing list](http://groups.google.com/group/jeweler-rb) for feedback on your proposal, to see if somebody else has done it.\n* Check out the [issue tracker](http://github.com/technicalpickles/jeweler/issues) to make sure someone already hasn't requested it and/or contributed it\n* Fork the project\n* Start a feature/bugfix branch\n* Commit and push until you are happy with your contribution\n* Make sure to add tests for the feature/bugfix. This is important so I don't break it in a future version unintentionally.\n* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate it to its own commit so I can cherry-pick around it.\n\n## Copyright\n\nCopyright (c) 2008-2010 Josh Nichols.\nCopyright (c) 2016 Fred Mitchell. See LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnicalpickles%2Fjeweler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechnicalpickles%2Fjeweler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnicalpickles%2Fjeweler/lists"}