2014-12-19 07:55:40 -05:00
|
|
|
# Contributing to Ransack
|
|
|
|
|
2015-08-19 09:41:23 -04:00
|
|
|
Please take a moment to review this document to make contributing easy and
|
|
|
|
effective for everyone involved!
|
2014-12-19 07:55:40 -05:00
|
|
|
|
2012-11-28 23:52:50 -05:00
|
|
|
Ransack is an open source project and we encourage contributions.
|
|
|
|
|
2015-11-16 17:22:10 -05:00
|
|
|
Please do not use the issue tracker for personal support requests. Stack
|
|
|
|
Overflow is a better place for that where a wider community can help you!
|
|
|
|
|
2012-11-28 23:52:50 -05:00
|
|
|
## Filing an issue
|
|
|
|
|
2015-08-19 09:31:04 -04:00
|
|
|
Good issue reports are extremely helpful! Please only open an issue if a bug
|
2015-08-19 09:41:23 -04:00
|
|
|
is caused by Ransack, is new (has not already been reported), and can be
|
|
|
|
reproduced from the information you provide.
|
2015-08-19 09:31:04 -04:00
|
|
|
|
2015-08-19 09:41:23 -04:00
|
|
|
Steps:
|
2014-12-19 07:55:40 -05:00
|
|
|
|
|
|
|
1. **Use the GitHub issue search** — check if the issue has already been
|
|
|
|
reported.
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2014-12-19 07:55:40 -05:00
|
|
|
2. **Check if the issue has been fixed** — try to reproduce it using the
|
|
|
|
`master` branch in the repository.
|
|
|
|
|
2015-12-11 17:15:09 -05:00
|
|
|
3. **Isolate the real problem** — make sure the issue is really a bug in
|
|
|
|
Ransack and not in your code or another gem.
|
2014-12-19 07:55:40 -05:00
|
|
|
|
2015-12-11 17:15:09 -05:00
|
|
|
4. **Report the issue** by providing the link to a self-contained
|
|
|
|
gist like [this](https://gist.github.com/jonatack/63048bc5062a84ba9e09) or
|
|
|
|
[this](https://gist.github.com/jonatack/5df41a0edb53b7bad989). Please use
|
|
|
|
these code examples as a bug-report template for your Ransack issue!
|
2014-12-19 07:55:40 -05:00
|
|
|
|
2015-12-11 17:15:09 -05:00
|
|
|
If you do not provide a self-contained gist and would like your issue to be reviewed, do provide at a minimum:
|
|
|
|
|
|
|
|
* A comprehensive list of steps to reproduce the issue, or even better, a
|
|
|
|
passing/failing test spec.
|
|
|
|
* Whether you are using Ransack through another gem like ActiveAdmin,
|
|
|
|
SimpleForm, etc.
|
|
|
|
* The versions of Ruby, Rails, Ransack and the database.
|
2014-12-19 07:55:40 -05:00
|
|
|
* Any relevant stack traces ("Full trace" preferred).
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2015-12-11 17:15:09 -05:00
|
|
|
Issues filed without the above information or that remain open without activity
|
|
|
|
for 14 days will be closed. They can be re-opened if actionable information to reproduce the issue is provided.
|
2012-11-28 23:52:50 -05:00
|
|
|
|
|
|
|
## Pull requests
|
|
|
|
|
2013-12-06 19:51:55 -05:00
|
|
|
We gladly accept pull requests to fix bugs and, in some circumstances, add new
|
2015-03-26 02:00:14 -04:00
|
|
|
features to Ransack. If you'd like to contribute and wonder what would be
|
|
|
|
helpful, simply run a search for "FIXME" and "TODO" on the codebase :smiley:
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2015-01-11 17:12:44 -05:00
|
|
|
If you're new to contributing to open source, welcome! It can seem scary, so
|
|
|
|
here is a [great blog post to help you get started]
|
|
|
|
(http://robots.thoughtbot.com/8-new-steps-for-fixing-other-peoples-code),
|
|
|
|
step by step.
|
|
|
|
|
2014-05-06 04:59:42 -04:00
|
|
|
Before issuing a pull request, please make sure that all specs are passing,
|
|
|
|
that any new features have test coverage, and that anything that breaks
|
|
|
|
backward compatibility has a very good reason for doing so.
|
|
|
|
|
2012-11-28 23:52:50 -05:00
|
|
|
Here's a quick guide:
|
|
|
|
|
2015-03-28 02:32:13 -04:00
|
|
|
1. Fork the repo.
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2015-03-28 02:32:13 -04:00
|
|
|
2. Create a thoughtfully-named branch for your changes (`git checkout -b my-new-feature`).
|
|
|
|
|
|
|
|
3. Install the development dependencies by running `bundle install`.
|
|
|
|
|
|
|
|
4. Begin by running the tests. We only take pull requests with passing tests,
|
2015-01-09 08:44:49 -05:00
|
|
|
and it's great to know that you have a clean slate:
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2013-12-06 19:51:55 -05:00
|
|
|
$ bundle exec rake spec
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2015-03-25 06:43:31 -04:00
|
|
|
The test suite runs by default with SQLite3. To run the test suite with PostgreSQL or MySQL, use:
|
|
|
|
|
2016-08-08 04:41:08 -04:00
|
|
|
$ DB=pg bundle exec rake spec (`DB=postgres` & `DB=postgresql` work too)
|
2015-03-25 06:43:31 -04:00
|
|
|
$ DB=mysql bundle exec rake spec
|
|
|
|
|
2018-03-17 16:19:32 -04:00
|
|
|
For Postgres and MySQL, databases are expected to exist, called 'ransack'. To create use these commands (assuming OS X and Homebrew):
|
|
|
|
|
|
|
|
### Postgres
|
|
|
|
$ createdb ransack
|
|
|
|
|
|
|
|
### MySQL
|
|
|
|
$ mysql -u root
|
|
|
|
mysql> create database ransack;
|
|
|
|
|
2016-08-08 04:41:08 -04:00
|
|
|
To run only the tests in a particular file: `rspec <path/to/filename>`
|
|
|
|
|
|
|
|
$ rspec spec/ransack/search_spec.rb
|
|
|
|
|
|
|
|
To run a single test in that file: `rspec <path/to/filename> -e "test name"`
|
|
|
|
|
|
|
|
$ rspec spec/ransack/search_spec.rb -e "accepts a context option"
|
|
|
|
|
2015-03-28 02:32:13 -04:00
|
|
|
5. Hack away! Please use Ruby features that are compatible down to Ruby 1.9.
|
2015-01-09 08:44:49 -05:00
|
|
|
Since version 1.5, Ransack no longer maintains Ruby 1.8 compatibility.
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2015-03-28 02:32:13 -04:00
|
|
|
6. Add tests for your changes. Only refactoring and documentation changes
|
2015-01-09 08:44:49 -05:00
|
|
|
require no new tests. If you are adding functionality or fixing a bug, we
|
|
|
|
need a test!
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2015-03-28 02:32:13 -04:00
|
|
|
7. Make the tests pass.
|
2014-12-17 18:17:22 -05:00
|
|
|
|
2015-03-28 02:32:13 -04:00
|
|
|
8. Update the Change Log. If you are adding new functionality, document it in
|
2015-01-09 08:44:49 -05:00
|
|
|
the README.
|
|
|
|
|
2015-08-28 18:48:02 -04:00
|
|
|
9. Make sure git knows your name and email address in your `~/.gitconfig` file:
|
2015-01-09 08:44:49 -05:00
|
|
|
|
2015-08-28 18:48:02 -04:00
|
|
|
$ git config --global user.name "Your Name"
|
|
|
|
$ git config --global user.email "contributor@example.com"
|
|
|
|
|
|
|
|
10. Commit your changes (`git commit -am 'Add feature/fix bug/improve docs'`).
|
|
|
|
If your pull request only contains documentation changes, please remember
|
|
|
|
to add `[skip ci]` to the beginning of your commit message so the Travis
|
|
|
|
test suite doesn't :runner: needlessly.
|
|
|
|
|
|
|
|
11. If necessary, rebase your commits into logical chunks, without errors. To
|
2015-03-28 02:32:13 -04:00
|
|
|
interactively rebase and cherry-pick from, say, the last 10 commits:
|
|
|
|
`git rebase -i HEAD~10`, then `git push -f`.
|
2015-01-09 08:44:49 -05:00
|
|
|
|
2015-08-28 18:48:02 -04:00
|
|
|
12. Push the branch up to your fork on GitHub
|
|
|
|
(`git push origin my-new-feature`) and from GitHub submit a pull request to
|
2015-03-28 02:32:13 -04:00
|
|
|
Ransack's `master` branch.
|
2015-01-09 08:44:49 -05:00
|
|
|
|
2012-11-28 23:52:50 -05:00
|
|
|
At this point you're waiting on us. We like to at least comment on, if not
|
|
|
|
accept, pull requests within three business days (and, typically, one business
|
|
|
|
day). We may suggest some changes or improvements or alternatives.
|
|
|
|
|
2015-01-09 08:44:49 -05:00
|
|
|
Some things that will increase the chance that your pull request is accepted:
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2014-10-14 16:02:18 -04:00
|
|
|
* Include tests that fail without your code, and pass with it.
|
|
|
|
* Update the README, the change log, the wiki documentation... anything that is
|
|
|
|
affected by your contribution.
|
2015-03-28 02:32:13 -04:00
|
|
|
* Use idiomatic Ruby and follow the syntax conventions below.
|
2012-11-28 23:52:50 -05:00
|
|
|
|
|
|
|
Syntax:
|
|
|
|
|
2015-03-28 02:32:13 -04:00
|
|
|
* Indent with two spaces, no tabs.
|
2014-05-06 04:59:42 -04:00
|
|
|
* 80 characters per line.
|
2012-11-28 23:52:50 -05:00
|
|
|
* No trailing whitespace. Blank lines should not have any space.
|
2014-10-14 16:02:18 -04:00
|
|
|
* Prefer `&&`/`||` over `and`/`or`.
|
2015-08-17 20:40:13 -04:00
|
|
|
* `MyClass.my_method(my_arg)` not `my_method( my_arg )` or `my_method my_arg`.
|
2012-11-28 23:52:50 -05:00
|
|
|
* `a = b` and not `a=b`.
|
2014-05-06 04:59:42 -04:00
|
|
|
* `a_method { |block| ... }` and not `a_method { | block | ... }` or
|
|
|
|
`a_method{|block| ...}`.
|
2015-01-09 08:44:49 -05:00
|
|
|
* Prefer simplicity, readability, and maintainability over terseness.
|
|
|
|
* Follow the conventions you see used in the code already.
|
2012-11-28 23:52:50 -05:00
|
|
|
|
2015-08-19 09:41:23 -04:00
|
|
|
And in case we didn't emphasize it enough: We love tests!
|