{"id":19174934,"url":"https://github.com/dtaniwaki/rack-dev-mark","last_synced_at":"2025-11-11T18:28:28.120Z","repository":{"id":17547622,"uuid":"20350413","full_name":"dtaniwaki/rack-dev-mark","owner":"dtaniwaki","description":"Show dev mark on development env","archived":false,"fork":false,"pushed_at":"2025-03-25T14:32:12.000Z","size":2840,"stargazers_count":354,"open_issues_count":1,"forks_count":38,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-04-15T03:37:29.316Z","etag":null,"topics":["dev","rack","rails"],"latest_commit_sha":null,"homepage":null,"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/dtaniwaki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-05-31T06:22:14.000Z","updated_at":"2025-03-25T14:32:17.000Z","dependencies_parsed_at":"2024-01-16T09:50:48.598Z","dependency_job_id":"bfa8eb5e-a5ce-4644-8251-a3336375363c","html_url":"https://github.com/dtaniwaki/rack-dev-mark","commit_stats":{"total_commits":201,"total_committers":14,"mean_commits":"14.357142857142858","dds":"0.12437810945273631","last_synced_commit":"4fa5864c03d3b2ddaacdbc46d7c5273e19a19adc"},"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaniwaki%2Frack-dev-mark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaniwaki%2Frack-dev-mark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaniwaki%2Frack-dev-mark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaniwaki%2Frack-dev-mark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dtaniwaki","download_url":"https://codeload.github.com/dtaniwaki/rack-dev-mark/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254129489,"owners_count":22019628,"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":["dev","rack","rails"],"created_at":"2024-11-09T10:19:48.572Z","updated_at":"2025-11-11T18:28:28.086Z","avatar_url":"https://github.com/dtaniwaki.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rack-dev-mark\n\n[![Gem Version][gem-image]][gem-link]\n[![Download][download-image]][download-link]\n[![Dependency Status][deps-image]][deps-link]\n[![Build Status][build-image]][build-link]\n[![Coverage Status][cov-image]][cov-link]\n[![Code Climate][gpa-image]][gpa-link]\n\nDifferentiate development environment from production. You can choose [themes](THEME.md) to differentiate the page.\n\n[The running sample](http://rack-dev-mark.dtaniwaki.com/) is available.\n\nYou can also try this gem on Heroku.\n\n[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/dtaniwaki/rack-dev-mark-sample-app)\n\n## Screenshot\n\n![screenshot development](misc/screenshot.gif)\n\n### On Development Env\n\n![screenshot development](misc/screenshot-development.png)\n\n### On Production Env\n\n![screenshot production](misc/screenshot-production.png)\n\n## Installation\n\nAdd the rack-dev-mark gem to your Gemfile.\n\n```ruby\ngem \"rack-dev-mark\"\n```\n\nAnd run `bundle install`.\n\n### For Rack App\n\n```ruby\nrequire 'rack/dev-mark'\nuse Rack::DevMark::Middleware\nrun MyApp\n```\n\n#### Middleman\n\nAdd the settings in `config.rb`.\n\n```ruby\nrequire 'rack/dev-mark'\nRack::DevMark.env = \"Your Env\"\nuse Rack::DevMark::Middleware\n```\n\n### For Rails App\n\nIn `config/environments/development.rb`\n\n```ruby\nRails.application.configure do\n  config.rack_dev_mark.enable = true\nend\n```\n\nOr\nIn `config/application.rb`\n\n```ruby\nmodule MyApp\n  class Application \u003c Rails::Application\n    config.rack_dev_mark.enable = !Rails.env.production?\n  end\nend\n```\n\nOr\nAlternatively, use generator\n\n```bash\nbundle exec rails g rack:dev-mark:install\n```\n\nThe middleware sets [title](lib/rack/dev-mark/theme/title.rb) and [github_fork_ribbon](lib/rack/dev-mark/theme/github_fork_ribbon.rb) themes as default.\n\n#### Exclude Multiple Environments in Rails\n\nShow the dev mark except env1, env2, env3.\n\nIn `config/application.rb`\n\n```ruby\nmodule MyApp\n  class Application \u003c Rails::Application\n    config.rack_dev_mark.enable = !%w(env1 env2 env3).include?(Rails.env)\n  end\nend\n```\n\n#### Rails on Heroku\n\nSince Heroku [uses production env for staging](https://devcenter.heroku.com/articles/multiple-environments). You can't use the settings above. However, the gem provide an easier way to set it up on Heroku. Just set the environment variable on the environment in which you want to show the mark.\n\n```bash\nheroku config:set RACK_DEV_MARK_ENV=staging\n```\n\nThat's it!\n\n#### Custom Rack Middleware Order\n\n`rack-dev-mark` should be inserted before `ActionDispatch::ShowExceptions` becase we want to show the dev mark on the error pages as well. However, it does not work well if it's inserted by incorrect order with some other rack middlewares. So, it provides the setting of inserted place.\n\n```ruby\nmodule MyApp\n  class Application \u003c Rails::Application\n    config.rack_dev_mark.insert_before SomeOtherMiddleware\n  end\nend\n```\n\n`config.rack_dev_mark.insert_after` is also available to insert `rack-dev-mark` after a middleware.\n\n[Here](COMPATIBILITY.md) is the compatibility list which many people often ask.\n\n#### Custom env string\n\nSet the custom env string maually.\n\n```ruby\nmodule MyApp\n  class Application \u003c Rails::Application\n    config.rack_dev_mark.env = 'foo'\n  end\nend\n```\n\n#### Temporarily disable the dev mark\n\n`skip_rack_dev_mark` controller helper works like `around_filter`.\n\n```ruby\nclass FooController \u003c ApplicationController\n  skip_rack_dev_mark only: [:iframe]\n\n  def index\n    # Do something\n  end\n\n  def iframe\n    # Do something\n  end\nend\n```\n\nIn this case, only `index` action will insert the dev mark.\n\n## I18n Support\n\nGet i18n string with rack_dev_mark locale strings.\n\ne.g. In `config/locale/rack_dev_mark.ja.yml`\n\n```\nja:\n  rack_dev_mark:\n    development: '開発中'\n    staging: 'ステージング'\n```\n\nThen, you will get translated string on the pages!\n\n## Custom Theme\n\nAlthough the default themes are `title` and `github_fork_ribbon`, you can create your own themes inheriting `Rack::DevMark::Theme::Base`.\n\n```ruby\nrequire 'rack/dev-mark/theme/base'\n\nclass NewTheme \u003c Rack::DevMark::Theme::Base\n  def insert_into(html, env, params = {})\n    # Do something for your theme\n    html\n  end\nend\n\nclass AnotherTheme \u003c Rack::DevMark::Theme::Base\n  def insert_into(html, env, params = {})\n    # Do something for your theme\n    html\n  end\nend\n```\n\nThen, insert them in your app.\n\n### For Rack App\n\n```ruby\nuse Rack::DevMark::Middleware, [NewTheme.new, AnotherTheme.new]\n```\n\n### For Rails App\n\nIn `config/application.rb`\n\n```ruby\nmodule MyApp\n  class Application \u003c Rails::Application\n    config.rack_dev_mark.theme = [NewTheme.new, AnotherTheme.new]\n  end\nend\n```\n\nYou can add any combination of themes. See more about [themes](THEME.md).\n\n## Contributing\n\n1. Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new [Pull Request](../../pull/new/master)\n\n## Copyright\n\nCopyright (c) 2014 Daisuke Taniwaki. See [LICENSE](LICENSE) for details.\n\n\n\n\n[gem-image]:   https://badge.fury.io/rb/rack-dev-mark.svg\n[gem-link]:    http://badge.fury.io/rb/rack-dev-mark\n[download-image]:https://img.shields.io/gem/dt/rack-dev-mark.svg\n[download-link]:https://rubygems.org/gems/rack-dev-mark\n[build-image]: https://secure.travis-ci.org/dtaniwaki/rack-dev-mark.svg\n[build-link]:  http://travis-ci.org/dtaniwaki/rack-dev-mark\n[deps-image]:  https://gemnasium.com/dtaniwaki/rack-dev-mark.svg\n[deps-link]:   https://gemnasium.com/dtaniwaki/rack-dev-mark\n[cov-image]:   https://coveralls.io/repos/dtaniwaki/rack-dev-mark/badge.png\n[cov-link]:    https://coveralls.io/r/dtaniwaki/rack-dev-mark\n[gpa-image]:   https://codeclimate.com/github/dtaniwaki/rack-dev-mark.svg\n[gpa-link]:    https://codeclimate.com/github/dtaniwaki/rack-dev-mark\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtaniwaki%2Frack-dev-mark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdtaniwaki%2Frack-dev-mark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtaniwaki%2Frack-dev-mark/lists"}