Code Monkey home page Code Monkey logo

app's Introduction

👊 RailsBump

Check your Ruby gems for compatibility with all major Rails versions.

Usage

The app is live at https://railsbump.org/, where you can check an individual gem or a whole Bundler lockfile (Gemfile.lock).

Behind the scenes

RailsBump uses a few approaches to check whether a gem version is compatible with a specific Rails release:

  • if the gem version has a direct dependency on one of the "Rails gems" (rails, railties, activerecord, activesupport, etc.), it may be clear that it is not compatible with some Rails releases immediately
  • if the gem version has a dependency on a specific version of another gem that we already know is not compatible with a Rails release, this gem version is not compatible either,
  • if all other approaches don't work, RailsBump simply puts the gem version and a Rails release in a Gemfile and lets Bundler figure it out. If the gem can be successfully installed along with the Rails release, it counts as "compatible".

Since some gems have a lot of versions and each one needs to be checked against multiple Rails releases, this could get out of hand quickly. To minimize the amount of compatibility checks that need to be done, the gem versions are grouped by their dependencies first. If multiple versions (of the same gem or even of different gems) have the same dependencies, a single check is enough to determine whether all of them are compatible with a specific Rails release or not.

To actually perform the check, GitHub Actions are used. For each check, a new branch is creted in a separate repository, which triggers a workflow that essentially tries to run bundle lock and reports the result back to the RailsBump app via a webhook.

History

RailsBump used to be called Ready4Rails until December 2019, when Manuel Meurer took over from Florent Guilleux to automate the service that Ready4Rails had been doing more or less manually until then. The relaunch took longer than expected, mainly because of the Coronavirus pandemic, and the first usable version of RailsBump was finally launched in August 2020.

Stats

You can see live stats from Plausible Analytics here: https://plausible.io/railsbump.org

Contributing

If you notice a bug or have an idea for an improvement, please open an issue or submit a PR.

If you'd like to get involved in the development, get in touch via email!

Support

If you find RailsBump useful and would like to support the ongoing development, buy me a coffee or become a sponsor!

License

This project is licensed under the MIT License - see the LICENSE.txt file for details.

app's People

Contributors

amarraja avatar etagwerker avatar florent2 avatar manuelmeurer avatar sameera207 avatar shockwavenn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

app's Issues

Logo

We could use a cool logo for RailsBump! :)

Gemfile Checks get stuck

Problem Description

After uploading THIS Gemfile, the Checks page (EXACT URL) appears stuck in the state captured in images below. No change in about 10-15 minutes.

Part 1

image

Part 2

image

Part 3

image

Part 4

image

Part 5

image

Email notifications

Visitors can already leave their email address to be notified when compats are checked.
These emails need to actually be sent then. 😄

./bin/setup is not working

Hi folks,

When I try to git clone and bin/setup I end up with this error:

✗ ./bin/setup
== Installing dependencies ==

[!] There was an error parsing `Gemfile`:
[!] There was an error parsing `Gemfile`: No such file or directory @ rb_sysopen - /Users/etagwerker/Projects/fastruby/railsbump/common-gems/rails/Gemfile. Bundler cannot continue.
. Bundler cannot continue.

 #  from /Users/etagwerker/Projects/fastruby/railsbump/Gemfile:22
 #  -------------------------------------------
 #  ).each do |m|
 >    eval_gemfile File.join('common-gems', m, 'Gemfile')
 #  end
 #  -------------------------------------------

[!] There was an error parsing `Gemfile`:
[!] There was an error parsing `Gemfile`: No such file or directory @ rb_sysopen - /Users/etagwerker/Projects/fastruby/railsbump/common-gems/rails/Gemfile. Bundler cannot continue.
. Bundler cannot continue.

 #  from /Users/etagwerker/Projects/fastruby/railsbump/Gemfile:22
 #  -------------------------------------------
 #  ).each do |m|
 >    eval_gemfile File.join('common-gems', m, 'Gemfile')
 #  end
 #  -------------------------------------------

== Command ["bundle install"] failed ==

Steps to reproduce

  1. git clone [email protected]:manuelmeurer/railsbump.git
  2. ./bin/setup

Potential Solution

I believe that this is happening because we are missing git submodule steps in bin/setup

It would be great if we initialized and fetched modules before trying to bundle install 😄

Add railsbump to a pipeline.

@manuelmeurer It would be nice to have a pipeline with different environments also that would allow us to setup heroku review apps so a new app is created with every PR to test it.

What you think?

Screen Shot 2020-05-19 at 10 50 07 PM

CSRF token in XHR requests

Currently skip_before_action :verify_authenticity_token is used in the compats controller to load the table of compats. The CSRF token should be sent along with the XHR request when requesting the table so that the auth token verification does not need to be skipped.

Check a lockfile returns error page

When trying to check lockfile, an error page is returned.

Browser used: Firefox 88
The message on the error page:

The change you wanted was rejected.

Maybe you tried to change something you didn't have access to.

If you are the application owner check the logs for more information.

Improve compatibility checking by splitting up dependency groups

Let's say we have a Compat linked to Rails 5.0 and these dependencies:

gem1, >= 1.0
gem2, >= 2.0

What Compats::Check does is trying to find another compat linked to Rails 5.0 with only gem1, >= 1.0 and one with only gem2, >= 2.0 as dependencies. If any of them exist and are marked as not compatible, the combination of both requirements cannot be compatible either.
So we can mark it as incompatible without running bundle check via Travis, which is quite slow.

When none of these compats with individual dependencies exist, the check is done via Travis. When afterwards a new compat is created, again linked to Rails 5.0 and these dependencies

gem1, >= 1.0
gem3, >= 3.0

the same check is done but no compats with individual dependencies cannot be found either, thus Travis needs to be called again.

So it would make sense to, after the first compat in this example is checked and found to be incompatible, create two more compats with only gem1, >= 1.0 and gem2, >= 2.0 as dependencies and get them checked via Travis, because if one of them is marked as incompatible, this will make checking further compats with this requirement much faster.

Make sure that parsing Gemfiles is safe

We should make sure that no random code can be executed when a Gemfile is parsed in app/services/gemfiles/create.rb.
Maybe something like this:

sanitized_content = content.split(/\r?\n/).map(&:trim).select do |line|
  /\A(gem|source)\b/.match?(line)
end
bundler   = Bundler::Dsl.new
gem_names = bundler.eval_gemfile('', sanitized_content).map(&:name).sort - %w(rails)

Can't change status of gems

I have some information about few gems and i want to update their status but i can't. There are no any button to change status and i absolutely sure that i have seen such buttons earlier (i've even used it few months ago). Can you fix that, please?!

Deploy to Heroku fails

When I try to deploy to Heroku, the Boostrap SCSS files in node_modules cannot be found:

Objekte aufzählen: 11, Fertig.
Zähle Objekte: 100% (11/11), Fertig.
Delta-Kompression verwendet bis zu 12 Threads.
Komprimiere Objekte: 100% (7/7), Fertig.
Schreibe Objekte: 100% (7/7), 36.71 KiB | 4.59 MiB/s, Fertig.
Gesamt 7 (Delta 5), Wiederverwendet 0 (Delta 0), Pack wiederverwendet 0
remote: Git submodules detected, installing:
remote: Submodule 'common-gems' (https://github.com/krautcomputing/common-gems.git) registered for path 'common-gems'
remote: Cloning into 'common-gems'...
remote: Submodule path 'common-gems': checked out '22094a8053b3510b3c2b6621ffd8fcff3e7880fc'
remote:
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Ruby app detected
remote: -----> Installing bundler 2.0.2
remote: -----> Removing BUNDLED WITH version in the Gemfile.lock
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.6.5
remote: -----> Installing dependencies using bundler 2.0.2
remote:        Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote:        Fetching gem metadata from https://rubygems.org/............
remote:        Using rake 13.0.1
[snip]
remote:        Removing actionmailer (6.0.2.1)
remote:        Bundle completed (188.55s)
remote:        Cleaning up the bundler cache.
remote: -----> Installing node-v10.15.3-linux-x64
remote: -----> Installing yarn-v1.16.0
remote: -----> Detecting rake tasks
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        rake aborted!
remote:        SassC::SyntaxError: Error: File to import not found or unreadable: bootstrap/scss/functions.
remote:                on line 8:1 of app/assets/stylesheets/partials/_bootstrap.scss
remote:                from line 1:1 of app/assets/stylesheets/application.scss
remote:        >> @import "bootstrap/scss/functions";
remote:
remote:           ^
remote:        /tmp/build_66051c98a1162bc2f3c3f5392824ba71/app/assets/stylesheets/partials/_bootstrap.scss:8
remote:        /tmp/build_66051c98a1162bc2f3c3f5392824ba71/vendor/bundle/ruby/2.6.0/gems/sassc-2.3.0/lib/sassc/engine.rb:50:in `render'
[snip]
remote:        Tasks: TOP => assets:precompile
remote:        (See full trace by running task with --trace)
remote:
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !	Push rejected to railsbump.
remote:
To https://git.heroku.com/railsbump.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: Fehler beim Versenden einiger Referenzen nach 'https://git.heroku.com/railsbump.git'

When i run rake assets:precompile locally, everything works fine.

I suspect that Heroku doesn't run yarn install first, so the node_modules folder is not present when rake assets:precompile is called.

@etagwerker Do you maybe know what's going on?

Server error from testing Gemfile.lock

I tried pasting this Gemfile.lock below using the "Check a Lockfile" feature but I got server errors every time. Here is the Gemfile.lock:

GEM
  remote: https://rubygems.org/
  specs:
    Ascii85 (1.0.3)
    StreetAddress (1.0.3)
    SyslogLogger (2.0)
    aasm (5.0.6)
      concurrent-ruby (~> 1.0)
    actioncable (5.2.4.4)
      actionpack (= 5.2.4.4)
      nio4r (~> 2.0)
      websocket-driver (>= 0.6.1)
    actionmailer (5.2.4.4)
      actionpack (= 5.2.4.4)
      actionview (= 5.2.4.4)
      activejob (= 5.2.4.4)
      mail (~> 2.5, >= 2.5.4)
      rails-dom-testing (~> 2.0)
    actionpack (5.2.4.4)
      actionview (= 5.2.4.4)
      activesupport (= 5.2.4.4)
      rack (~> 2.0, >= 2.0.8)
      rack-test (>= 0.6.3)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.2)
    actionview (5.2.4.4)
      activesupport (= 5.2.4.4)
      builder (~> 3.1)
      erubi (~> 1.4)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.3)
    active_model_serializers (0.8.4)
      activemodel (>= 3.0)
    activejob (5.2.4.4)
      activesupport (= 5.2.4.4)
      globalid (>= 0.3.6)
    activemodel (5.2.4.4)
      activesupport (= 5.2.4.4)
    activerecord (5.2.4.4)
      activemodel (= 5.2.4.4)
      activesupport (= 5.2.4.4)
      arel (>= 9.0)
    activerecord-import (1.0.4)
      activerecord (>= 3.2)
    activerecord-session_store (1.1.3)
      actionpack (>= 4.0)
      activerecord (>= 4.0)
      multi_json (~> 1.11, >= 1.11.2)
      rack (>= 1.5.2, < 3)
      railties (>= 4.0)
    activestorage (5.2.4.4)
      actionpack (= 5.2.4.4)
      activerecord (= 5.2.4.4)
      marcel (~> 0.3.1)
    activesupport (5.2.4.4)
      concurrent-ruby (~> 1.0, >= 1.0.2)
      i18n (>= 0.7, < 2)
      minitest (~> 5.1)
      tzinfo (~> 1.1)
    acts_as_list (1.0.2)
      activerecord (>= 4.2)
    addressable (2.7.0)
      public_suffix (>= 2.0.2, < 5.0)
    afm (0.2.2)
    american_date (1.1.0)
    arel (9.0.0)
    ast (2.4.1)
    attr_encrypted (3.1.0)
      encryptor (~> 3.0.0)
    audited (4.8.0)
      activerecord (>= 4.0, < 5.3)
    aws-eventstream (1.1.0)
    aws-partitions (1.328.0)
    aws-sdk-core (3.99.0)
      aws-eventstream (~> 1, >= 1.0.2)
      aws-partitions (~> 1, >= 1.239.0)
      aws-sigv4 (~> 1.1)
      jmespath (~> 1.0)
    aws-sdk-ec2 (1.174.0)
      aws-sdk-core (~> 3, >= 3.99.0)
      aws-sigv4 (~> 1.1)
    aws-sdk-elasticloadbalancingv2 (1.44.0)
      aws-sdk-core (~> 3, >= 3.71.0)
      aws-sigv4 (~> 1.1)
    aws-sdk-kms (1.33.0)
      aws-sdk-core (~> 3, >= 3.71.0)
      aws-sigv4 (~> 1.1)
    aws-sdk-lambda (1.44.0)
      aws-sdk-core (~> 3, >= 3.99.0)
      aws-sigv4 (~> 1.1)
    aws-sdk-s3 (1.68.0)
      aws-sdk-core (~> 3, >= 3.99.0)
      aws-sdk-kms (~> 1)
      aws-sigv4 (~> 1.1)
    aws-sdk-ssm (1.80.0)
      aws-sdk-core (~> 3, >= 3.71.0)
      aws-sigv4 (~> 1.1)
    aws-sigv4 (1.1.4)
      aws-eventstream (~> 1.0, >= 1.0.2)
    bcrypt (3.1.16)
    bigdecimal (1.4.4)
    browser (0.8.0)
    bson (4.11.1)
    builder (3.2.4)
    cancancan (1.17.0)
    capistrano (2.15.9)
      highline
      net-scp (>= 1.0.0)
      net-sftp (>= 2.0.0)
      net-ssh (>= 2.0.14)
      net-ssh-gateway (>= 1.1.0)
    capistrano-patch (0.0.2)
      capistrano (>= 2.5.5)
    capistrano-spec (0.6.3)
    capybara (2.18.0)
      addressable
      mini_mime (>= 0.1.3)
      nokogiri (>= 1.3.3)
      rack (>= 1.0.0)
      rack-test (>= 0.5.4)
      xpath (>= 2.0, < 4.0)
    capybara-screenshot (1.0.10)
      capybara (>= 1.0, < 3)
      launchy
    charlock_holmes (0.7.7)
    chef-api (0.10.10)
      mime-types
      mixlib-log (>= 1, < 4)
    childprocess (0.9.0)
      ffi (~> 1.0, >= 1.0.11)
    chronic (0.4.0)
    climate_control (0.2.0)
    cloudfiles (1.4.18)
      mime-types (>= 1.16)
    coderay (1.1.3)
    concurrent-ruby (1.1.7)
    crack (0.4.3)
      safe_yaml (~> 1.0.0)
    crass (1.0.6)
    css_parser (1.6.0)
      addressable
    dalli (2.7.10)
    dante (0.2.0)
    database_cleaner (1.8.5)
    database_cleaner-active_record (1.8.0)
      activerecord
      database_cleaner (~> 1.8.0)
    database_cleaner-mongo (1.8.1)
      database_cleaner (~> 1.8.0)
      mongo
    database_cleaner-mongoid (1.8.1)
      database_cleaner (~> 1.8.0)
      database_cleaner-mongo (~> 1.8.0)
      mongoid
    debase (0.2.4.1)
      debase-ruby_core_source (>= 0.10.2)
    debase-ruby_core_source (0.10.9)
    devise (4.7.3)
      bcrypt (~> 3.0)
      orm_adapter (~> 0.1)
      railties (>= 4.1.0)
      responders
      warden (~> 1.2.3)
    devise-encryptable (0.2.0)
      devise (>= 2.1.0)
    diff-lcs (1.4.4)
    docile (1.3.2)
    domain_name (0.5.20180417)
      unf (>= 0.0.5, < 1.0.0)
    dwolla_v2 (3.0.1)
      faraday (>= 0.15)
      faraday_middleware (>= 0.13)
      hashie (>= 3.6)
    dynamic_form (1.1.4)
    encryptor (3.0.0)
    erubi (1.10.0)
    factory_bot (4.11.1)
      activesupport (>= 3.0.0)
    factory_bot_rails (4.11.1)
      factory_bot (~> 4.11.1)
      railties (>= 3.0.0)
    faker (0.3.1)
    faraday (1.1.0)
      multipart-post (>= 1.2, < 3)
      ruby2_keywords
    faraday_middleware (1.0.0)
      faraday (~> 1.0)
    fast_stack (0.2.0)
    fauxhai (3.9.0)
      net-ssh
    ffi (1.13.1)
    flamegraph (0.9.5)
    gem-licenses (0.2.2)
    generator_spec (0.9.4)
      activesupport (>= 3.0.0)
      railties (>= 3.0.0)
    globalid (0.4.2)
      activesupport (>= 4.2.0)
    haml (5.1.2)
      temple (>= 0.8.0)
      tilt
    hashdiff (1.0.0)
    hashery (2.1.2)
    hashie (4.1.0)
    highline (2.0.3)
    htmlentities (4.3.4)
    http-cookie (1.0.3)
      domain_name (~> 0.5)
    i18n (1.8.5)
      concurrent-ruby (~> 1.0)
    interactor (3.1.2)
    jmespath (1.4.0)
    js-routes (1.4.9)
      railties (>= 4)
      sprockets-rails
    json (2.3.1)
    json_pure (2.3.1)
    jwt (1.5.6)
    launchy (2.4.0)
      addressable (~> 2.3)
    libxml-ruby (3.1.0)
    liquid (4.0.3)
    lockfile (2.1.3)
    loofah (2.8.0)
      crass (~> 1.0.2)
      nokogiri (>= 1.5.9)
    loofah-activerecord (2.0.0)
      loofah (>= 1.0.0)
    machinist (1.0.6)
    machinist_mongo (1.2.0)
      machinist (~> 1.0.6)
    mail (2.7.1)
      mini_mime (>= 0.1.1)
    mail_safe (0.3.1)
      actionmailer (>= 1.3.6)
    marcel (0.3.3)
      mimemagic (~> 0.3.2)
    method_source (1.0.0)
    mime-types (3.3.1)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2020.0512)
    mimemagic (0.3.5)
    mini_mime (1.0.2)
    mini_portile2 (2.4.0)
    minitest (5.14.2)
    mixlib-log (3.0.9)
    money (6.13.7)
      i18n (>= 0.6.4, <= 2)
    mongo (2.14.0)
      bson (>= 4.8.2, < 5.0.0)
    mongo_ext (0.19.3)
    mongoid (6.4.8)
      activemodel (>= 5.1, < 6.0.0)
      mongo (>= 2.5.1, < 3.0.0)
    mongoid-paperclip (0.0.11)
      mongoid
      paperclip (>= 2.3.6, != 4.3.0)
    mongoid_paranoia (0.3.0)
      mongoid (>= 6.0.0)
    multi_json (1.15.0)
    multi_xml (0.6.0)
    multipart-post (2.1.1)
    mysql2 (0.5.3)
    net-scp (3.0.0)
      net-ssh (>= 2.6.5, < 7.0.0)
    net-sftp (2.1.2)
      net-ssh (>= 2.6.5)
    net-ssh (4.2.0)
    net-ssh-gateway (2.0.0)
      net-ssh (>= 4.0.0)
    netrc (0.11.0)
    nio4r (2.5.4)
    nokogiri (1.10.10)
      mini_portile2 (~> 2.4.0)
    normalizr (0.4.0)
    oauth2 (1.4.4)
      faraday (>= 0.8, < 2.0)
      jwt (>= 1.0, < 3.0)
      multi_json (~> 1.3)
      multi_xml (~> 0.5)
      rack (>= 1.2, < 3)
    omniauth (1.9.1)
      hashie (>= 3.4.6)
      rack (>= 1.6.2, < 3)
    omniauth-google-oauth2 (0.2.2)
      omniauth (~> 1.0)
      omniauth-oauth2
    omniauth-oauth2 (1.5.0)
      oauth2 (~> 1.1)
      omniauth (~> 1.2)
    omniauth-rails_csrf_protection (0.1.2)
      actionpack (>= 4.2)
      omniauth (>= 1.3.1)
    orm_adapter (0.5.0)
    paperclip (6.1.0)
      activemodel (>= 4.2.0)
      activesupport (>= 4.2.0)
      mime-types
      mimemagic (~> 0.3.0)
      terrapin (~> 0.6.0)
    parallel (1.19.2)
    parser (2.7.2.0)
      ast (~> 2.4.1)
    pdf-core (0.6.1)
    pdf-reader (2.4.0)
      Ascii85 (~> 1.0.0)
      afm (~> 0.2.1)
      hashery (~> 2.0)
      ruby-rc4
      ttfunk
    pdfkit (0.8.2)
    plaid (12.0.0)
      faraday
      faraday_middleware
      hashie (>= 3.4.3)
    postmark (1.15.0)
      json
    postmark-rails (0.19.0)
      actionmailer (>= 3.0.0)
      postmark (~> 1.15.0)
    power_assert (1.1.4)
    prawn (2.1.0)
      pdf-core (~> 0.6.1)
      ttfunk (~> 1.4.0)
    protected_attributes_continued (1.7.0)
      activemodel (>= 5.0)
    pry (0.13.1)
      coderay (~> 1.1)
      method_source (~> 1.0)
    psych (3.2.1)
    public_suffix (4.0.5)
    puma (5.0.2)
      nio4r (~> 2.0)
    rack (2.2.3)
    rack-cache (1.3.1)
      rack (>= 0.4)
    rack-handlers (0.7.3)
      rack
    rack-mini-profiler (2.2.0)
      rack (>= 1.2.0)
    rack-test (1.1.0)
      rack (>= 1.0, < 3)
    rack-throttle (0.7.0)
      bundler (>= 1.0.0)
      rack (>= 1.0.0)
    rails (5.2.4.4)
      actioncable (= 5.2.4.4)
      actionmailer (= 5.2.4.4)
      actionpack (= 5.2.4.4)
      actionview (= 5.2.4.4)
      activejob (= 5.2.4.4)
      activemodel (= 5.2.4.4)
      activerecord (= 5.2.4.4)
      activestorage (= 5.2.4.4)
      activesupport (= 5.2.4.4)
      bundler (>= 1.3.0)
      railties (= 5.2.4.4)
      sprockets-rails (>= 2.0.0)
    rails-controller-testing (1.0.5)
      actionpack (>= 5.0.1.rc1)
      actionview (>= 5.0.1.rc1)
      activesupport (>= 5.0.1.rc1)
    rails-dom-testing (2.0.3)
      activesupport (>= 4.2.0)
      nokogiri (>= 1.6)
    rails-html-sanitizer (1.3.0)
      loofah (~> 2.3)
    rails-observers (0.1.5)
      activemodel (>= 4.0)
    railties (5.2.4.4)
      actionpack (= 5.2.4.4)
      activesupport (= 5.2.4.4)
      method_source
      rake (>= 0.8.7)
      thor (>= 0.19.0, < 2.0)
    rainbow (3.0.0)
    rake (12.3.3)
    rb-fsevent (0.10.3)
    rchardet19 (1.3.7)
    rdiscount (2.2.0.2)
    recursive-open-struct (1.1.2)
    redis (3.3.3)
    regexp_parser (1.8.2)
    responders (3.0.1)
      actionpack (>= 5.0)
      railties (>= 5.0)
    rest-client (2.0.2)
      http-cookie (>= 1.0.2, < 2.0)
      mime-types (>= 1.16, < 4.0)
      netrc (~> 0.8)
    rexml (3.2.4)
    ri_cal (0.8.8)
    roadie (3.4.0)
      css_parser (~> 1.4)
      nokogiri (~> 1.5)
    rollbar (3.0.1)
    rspec (3.9.0)
      rspec-core (~> 3.9.0)
      rspec-expectations (~> 3.9.0)
      rspec-mocks (~> 3.9.0)
    rspec-activemodel-mocks (1.0.3)
      activemodel (>= 3.0)
      activesupport (>= 3.0)
      rspec-mocks (>= 2.99, < 4.0)
    rspec-collection_matchers (1.1.3)
      rspec-expectations (>= 2.99.0.beta1)
    rspec-core (3.9.2)
      rspec-support (~> 3.9.3)
    rspec-expectations (3.9.2)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.9.0)
    rspec-legacy_formatters (1.0.1)
      rspec (~> 3.0)
    rspec-mocks (3.9.1)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.9.0)
    rspec-rails (4.0.1)
      actionpack (>= 4.2)
      activesupport (>= 4.2)
      railties (>= 4.2)
      rspec-core (~> 3.9)
      rspec-expectations (~> 3.9)
      rspec-mocks (~> 3.9)
      rspec-support (~> 3.9)
    rspec-retry (0.3.0)
      rspec
    rspec-support (3.9.3)
    rspec_junit_formatter (0.4.1)
      rspec-core (>= 2, < 4, != 2.12.0)
    rubocop (1.1.0)
      parallel (~> 1.10)
      parser (>= 2.7.1.5)
      rainbow (>= 2.2.2, < 4.0)
      regexp_parser (>= 1.8)
      rexml
      rubocop-ast (>= 1.0.1)
      ruby-progressbar (~> 1.7)
      unicode-display_width (>= 1.4.0, < 2.0)
    rubocop-ast (1.1.0)
      parser (>= 2.7.1.5)
    rubocop-performance (1.8.1)
      rubocop (>= 0.87.0)
      rubocop-ast (>= 0.4.0)
    rubocop-rails (2.8.1)
      activesupport (>= 4.2.0)
      rack (>= 1.1)
      rubocop (>= 0.87.0)
    ruby-debug-ide (0.7.2)
      rake (>= 0.8.1)
    ruby-ole (1.2.12.2)
    ruby-prof (0.17.0)
    ruby-progressbar (1.10.1)
    ruby-rc4 (0.1.5)
    ruby2_keywords (0.0.2)
    rubyzip (1.3.0)
    ruleby (0.8)
    safe_yaml (1.0.5)
    scout_apm (2.4.21)
    secure_headers (6.3.0)
    selenium-webdriver (3.141.0)
      childprocess (~> 0.5)
      rubyzip (~> 1.2, >= 1.2.2)
    shoulda-callback-matchers (1.1.4)
      activesupport (>= 3)
    shoulda-matchers (4.3.0)
      activesupport (>= 4.2.0)
    simplecov (0.18.5)
      docile (~> 1.1)
      simplecov-html (~> 0.11)
    simplecov-cobertura (1.4.0)
      simplecov (~> 0.8)
    simplecov-html (0.12.2)
    sort_alphabetical (1.0.2)
      unicode_utils (>= 1.2.2)
    spreadsheet (1.0.0)
      ruby-ole (>= 1.0)
    spring (2.1.0)
    spring-commands-rspec (1.0.4)
      spring (>= 0.9.1)
    sprockets (4.0.2)
      concurrent-ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-rails (3.2.2)
      actionpack (>= 4.0)
      activesupport (>= 4.0)
      sprockets (>= 3.0.0)
    stripe (5.28.0)
    stripe-ruby-mock (3.0.1)
      dante (>= 0.2.0)
      multi_json (~> 1.0)
      stripe (> 5, < 6)
    temple (0.8.2)
    terrapin (0.6.0)
      climate_control (>= 0.0.3, < 1.0)
    test-unit (3.3.2)
      power_assert
    thor (1.0.1)
    thread_safe (0.3.6)
    tilt (2.0.10)
    timecop (0.7.1)
    timeliness (0.3.7)
    ttfunk (1.4.0)
    twilio-ruby (4.13.0)
      builder (>= 2.1.2)
      jwt (~> 1.0)
      multi_json (>= 1.3.0)
    tzinfo (1.2.8)
      thread_safe (~> 0.1)
    tzinfo-data (1.2019.3)
      tzinfo (>= 1.0.0)
    unf (0.1.4)
      unf_ext
    unf_ext (0.0.7.5)
    unicode-display_width (1.7.0)
    unicode_utils (1.4.0)
    useragent (0.10.0)
    validates_timeliness (3.0.14)
      timeliness (~> 0.3.6)
    warden (1.2.9)
      rack (>= 2.0.9)
    webmock (3.7.6)
      addressable (>= 2.3.6)
      crack (>= 0.3.2)
      hashdiff (>= 0.4.0, < 2.0.0)
    websocket-driver (0.7.3)
      websocket-extensions (>= 0.1.0)
    websocket-extensions (0.1.5)
    will_paginate (3.3.0)
    wirble (0.1.3)
    xpath (3.2.0)
      nokogiri (~> 1.8)
    yard (0.9.20)

PLATFORMS
  ruby

DEPENDENCIES
  StreetAddress (= 1.0.3)
  SyslogLogger
  aasm
  active_model_serializers (= 0.8.4)
  activerecord-import
  activerecord-session_store
  acts_as_list
  american_date
  attr_encrypted
  audited (~> 4.8.0)
  aws-sdk-ec2
  aws-sdk-elasticloadbalancingv2
  aws-sdk-lambda
  aws-sdk-s3
  aws-sdk-ssm
  bcrypt
  bigdecimal (~> 1.4.4)
  browser
  builder
  cancancan (= 1.17.0)
  capistrano (= 2.15.9)
  capistrano-patch
  capistrano-spec
  capybara (~> 2.0)
  capybara-screenshot
  charlock_holmes
  chef-api
  chronic (= 0.4.0)
  cloudfiles (= 1.4.18)
  dalli
  database_cleaner-active_record
  database_cleaner-mongoid
  debase
  devise
  devise-encryptable (= 0.2.0)
  dwolla_v2 (~> 3.0.1)
  dynamic_form
  factory_bot_rails (~> 4.0)
  faker (= 0.3.1)
  fast_stack
  fauxhai
  flamegraph
  gem-licenses
  generator_spec
  haml
  htmlentities
  interactor
  js-routes
  json_pure
  launchy (= 2.4.0)
  libxml-ruby (= 3.1.0)
  liquid
  lockfile
  loofah-activerecord
  machinist (~> 1.0.6)
  machinist_mongo (~> 1.2.0)
  mail
  mail_safe
  minitest
  money
  mongo
  mongo_ext (~> 0.19.3)
  mongoid (~> 6.2)
  mongoid-paperclip
  mongoid_paranoia
  mysql2
  net-sftp
  net-ssh
  nokogiri
  normalizr (~> 0.4)
  oauth2
  omniauth-google-oauth2
  omniauth-oauth2
  omniauth-rails_csrf_protection (~> 0.1)
  paperclip
  pdf-reader (~> 2.4)
  pdfkit (= 0.8.2)
  plaid
  postmark (= 1.15.0)
  postmark-rails (= 0.19.0)
  prawn
  protected_attributes_continued
  pry
  psych (= 3.2.1)
  puma
  rack-cache (~> 1.3.1)
  rack-handlers
  rack-mini-profiler
  rack-throttle (~> 0.7.0)
  rails (~> 5.2.4.4)
  rails-controller-testing
  rails-observers
  rake (~> 12.3.3)
  rb-fsevent (>= 0.9.1)
  rchardet19 (~> 1.3)
  rdiscount
  recursive-open-struct
  redis
  responders
  rest-client
  ri_cal
  roadie
  rollbar
  rspec
  rspec-activemodel-mocks
  rspec-collection_matchers
  rspec-legacy_formatters
  rspec-mocks
  rspec-rails
  rspec-retry
  rspec_junit_formatter
  rubocop (= 1.1.0)
  rubocop-performance (= 1.8.1)
  rubocop-rails (= 2.8.1)
  ruby-debug-ide
  ruby-prof (= 0.17.0)
  ruby-progressbar
  rubyzip
  ruleby (~> 0.8)
  scout_apm (~> 2.0.x)
  secure_headers
  selenium-webdriver (= 3.141.0)
  shoulda-callback-matchers
  shoulda-matchers
  simplecov
  simplecov-cobertura
  sort_alphabetical
  spreadsheet (= 1.0.0)
  spring
  spring-commands-rspec
  stripe (~> 5.28)
  stripe-ruby-mock (~> 3.0.1)
  test-unit
  timecop (= 0.7.1)
  twilio-ruby (= 4.13.0)
  tzinfo-data
  useragent
  validates_timeliness (~> 3.0.7)
  webmock
  will_paginate
  wirble (= 0.1.3)
  yard

RUBY VERSION
   ruby 2.7.2p137

BUNDLED WITH
   1.17.3

Strict search -> fuzzy search

There is no convention among gem developers about naming so sometime they uses dashes sometimes underscores.

Today we have strict search so activeadmin works but active admin doesn't.

It would be good to use some kind of fuzzy search so we will be capable to find a gem if we really don't its correct name.

Error pages

We should have proper 404 and 500 error pages.

Find and delete abandoned git folders

Sometimes the repo checked out by CheckOutGitRepo is not deleted afterwards, so there should be a daily task that checks for abandoned (i.e., created more than an hour ago) git folders and delete those.

[Feature] Adding an API to search gem details.

Hi @Florent2 ,
It would be great to have an API to check the availability of the gems. In my company we are doing number of rails upgrades (from older versions of rails to rails4.x) . So if ready4rails has an api, we could write a script/gem to go through our apps Gemfile.lock and see if the gems are ready for rails4/5.

My high level thinking is,

Search

end point - http://www.ready4rails.net/api/ready 
request type - POST
params - gem_name <gem name>

response

response type - JSON
response - { 'gem_name' => { "rails4" => true, "rails5" => false } }

and also, at some point we can extend this api to feed the gem details. E.g if we have a running rails4 app, we can updated the script/gem to notify the gems used in Gemfile.lock to update "ready4rails".

Let me know your thoughts, if you are happy, I could get start on this 😄

cheers

Regularly check for unprocessed compatibilities

We should check once a day whether there are any compats that have not been processed 24 hours after creation and, if so, notify an admin (e.g. simply via Rollbar.error) to have a look.

Support for earlier versions of Rails?

Hey @manuelmeurer,

Congratulations on releasing 1.0! It looks great!

I was wondering if you had any plans to support older versions of Rails? At work we have been getting a steady stream of Rails 2.3 client projects, so we would be interested in seeing compatibility data for Rails 3.0, 3.1, 3.2, 4.0, and 4.1.

I realize that it has been many years since those versions were deprecated but there are a lot of companies out there using these versions still. 😄

I realize also that I could probably use next_rails to check compatibility for those old projects. So that is a good workaround.

Anyway, I thought I should bring it up in case you had any ideas on this.

Thanks!

GemfilesController#create raises Gemfiles::Create::Error -- There was an error parsing

Hey,

It seems that checking a gemfile is not working:

(byebug) e.class
Gemfiles::Create::Error
(byebug) e.message
"\n[!] There was an error parsing ``: \n[!] There was an error parsing `Gemfile`: No such file or directory @ rb_sysopen - /Users/etagwerker/Projects/fastruby/common-gems/rails/Gemfile. Bundler cannot continue.\n. Bundler cannot continue.\n\n #  from /Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/bundler-2.1.4/lib/bundler.rb:535\n #  -------------------------------------------\n #   >   #  \n #  -------------------------------------------\n"
(byebug) puts e.message

[!] There was an error parsing ``:
[!] There was an error parsing `Gemfile`: No such file or directory @ rb_sysopen - /Users/etagwerker/Projects/fastruby/common-gems/rails/Gemfile. Bundler cannot continue.
. Bundler cannot continue.

 #  from /Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/bundler-2.1.4/lib/bundler.rb:535
 #  -------------------------------------------
 #   >   #
 #  -------------------------------------------
nil
(byebug) puts e.backtrace
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/services-7.3.1/lib/services/modules/exception_wrapper.rb:10:in `rescue in call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/services-7.3.1/lib/services/modules/exception_wrapper.rb:4:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/services-7.3.1/lib/services/modules/call_logger.rb:36:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/services-7.3.1/lib/services/base.rb:21:in `call'
/Users/etagwerker/Projects/fastruby/railsbump/app/controllers/gemfiles_controller.rb:7:in `create'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/abstract_controller/base.rb:195:in `process_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_controller/metal/rendering.rb:30:in `process_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/callbacks.rb:112:in `block in run_callbacks'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/marginalia-1.8.0/lib/marginalia.rb:111:in `record_query_comment'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/callbacks.rb:139:in `run_callbacks'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/abstract_controller/callbacks.rb:41:in `process_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_controller/metal/rescue.rb:22:in `process_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/notifications.rb:180:in `block in instrument'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/notifications.rb:180:in `instrument'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/abstract_controller/base.rb:136:in `process'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionview-6.0.3/lib/action_view/rendering.rb:39:in `process'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_controller/metal.rb:190:in `dispatch'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_controller/metal.rb:254:in `dispatch'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/routing/route_set.rb:33:in `serve'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/journey/router.rb:49:in `block in serve'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/journey/router.rb:32:in `each'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/journey/router.rb:32:in `serve'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/routing/route_set.rb:834:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-attack-6.3.0/lib/rack/attack.rb:111:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-2.0.9/lib/rack/tempfile_reaper.rb:15:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-2.0.9/lib/rack/etag.rb:25:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-2.0.9/lib/rack/conditional_get.rb:38:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-2.0.9/lib/rack/head.rb:12:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/http/content_security_policy.rb:18:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-2.0.9/lib/rack/session/abstract/id.rb:259:in `context'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-2.0.9/lib/rack/session/abstract/id.rb:253:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/cookies.rb:648:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activerecord-6.0.3/lib/active_record/migration.rb:567:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/callbacks.rb:101:in `run_callbacks'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/executor.rb:14:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rollbar-2.25.0/lib/rollbar/middleware/rails/rollbar.rb:25:in `block in call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rollbar-2.25.0/lib/rollbar.rb:145:in `scoped'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rollbar-2.25.0/lib/rollbar/middleware/rails/rollbar.rb:22:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/better_errors-2.6.0/lib/better_errors/middleware.rb:84:in `protected_app_call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/better_errors-2.6.0/lib/better_errors/middleware.rb:79:in `better_errors_call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/better_errors-2.6.0/lib/better_errors/middleware.rb:57:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rollbar-2.25.0/lib/rollbar/middleware/rails/show_exceptions.rb:22:in `call_with_rollbar'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/railties-6.0.3/lib/rails/rack/logger.rb:37:in `call_app'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/railties-6.0.3/lib/rails/rack/logger.rb:26:in `block in call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/tagged_logging.rb:80:in `block in tagged'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/tagged_logging.rb:28:in `tagged'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/tagged_logging.rb:80:in `tagged'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/railties-6.0.3/lib/rails/rack/logger.rb:26:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/sprockets-rails-3.2.1/lib/sprockets/rails/quiet_assets.rb:13:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-2.0.9/lib/rack/method_override.rb:22:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-2.0.9/lib/rack/runtime.rb:22:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/activesupport-6.0.3/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/executor.rb:14:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/static.rb:126:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-2.0.9/lib/rack/sendfile.rb:111:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/actionpack-6.0.3/lib/action_dispatch/middleware/host_authorization.rb:82:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/webpacker-5.1.1/lib/webpacker/dev_server_proxy.rb:25:in `perform_request'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/rack-proxy-0.6.5/lib/rack/proxy.rb:57:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/railties-6.0.3/lib/rails/engine.rb:527:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/puma-4.3.3/lib/puma/configuration.rb:228:in `call'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/puma-4.3.3/lib/puma/server.rb:682:in `handle_request'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/puma-4.3.3/lib/puma/server.rb:472:in `process_client'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/puma-4.3.3/lib/puma/server.rb:328:in `block in run'
/Users/etagwerker/.rvm/gems/ruby-2.6.6/gems/puma-4.3.3/lib/puma/thread_pool.rb:134:in `block in spawn_thread'
nil

Steps to reproduce

  1. Go to http://localhost:3000/gemfiles/new
  2. Submit the Gemfile that is present in this project
  3. It will raise an exception

Not sure why that is happening as it seems that it's a valid ruby file.

My best guess is that this line is messing things up:

https://github.com/manuelmeurer/railsbump/blob/master/app/services/gemfiles/create.rb#L18

Thoughts?

Status of this project?

Hi there,

First of all, thanks for writing and maintaining this project! We've been using it at https://www.fastruby.io for a while.

Unfortunately, it seems that both ready4rails.net and https://railsbump.org are not working.

  1. ready4rails.net now seems to redirect to some spammy website
  2. https://railsbump.org responds with a rails 404 page

My company and I would love to collaborate on this project and help out if possible. Is there anything we can do to help?

Please let me know.

Thanks!

Sitemap and robots.txt

We should have a proper sitemap listing all available pages, and a robots.txt referencing the sitemap and allowing Google to index everything.

Quick question on testing

Hey @Florent2, thanks for the great project ! 👍 . I would also like to contribute as and when time permits.

I would like to start with adding some more tests around the code. Before starting I have a quick question. I can see the project is using the standard rails test framework, so have you decided to stick with it or is there flexibility to move to rspec ?

I'm more comfortable with rspec and if you are ok, I would rewrite the current tests and add some more with rspec and factory girl

let me know your thoughts

cheers
Sam

Apply inconclusive status for not found gems

Hey @manuelmeurer, thanks for the great project.

I tried to use it for my Gemfile.lock but if failed with gem not found error. It happens for private gems. I assume it would be better to just ignore those gems or mark their compatibility as inconclusive.
What do you think about it? I can prepare a PR if you like this idea.

Include only the Font Awesome icons that are needed

We should not include all of Font Awesome but only the ones that are really used, to let Webpack shake the 🌲.

Something like this: (copied from another project)

import { config, library, dom } from '@fortawesome/fontawesome-svg-core'

import {
  faMoneyBill as farMoneyBill
} from '@fortawesome/pro-regular-svg-icons'

import {
  faCalendarAlt as falCalendarAlt
} from '@fortawesome/pro-light-svg-icons'

import {
  faMegaphone    as fasMegaphone,
  faChevronRight as fasChevronRight,
  faMapMarker    as fasMapMarker
} from '@fortawesome/pro-solid-svg-icons'

// https://fontawesome.com/how-to-use/on-the-web/using-with/turbolinks
config.mutateApproach = 'sync'

library.add(
  // Regular
  farMoneyBill,

  // Light
  falCalendarAlt,

  // Solid
  fasMegaphone,
  fasChevronRight,
  fasMapMarker
)

dom.watch()

Homepage

We'll probably want to show all (or the most popular) checked gems on the homepage.
Maybe also the ones that have most recently become compatible with the latest Rails version?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.