1
votes

Comment faire fonctionner Daterangepicker dans Rails 6?

Je viens de mettre à jour mon application Rails de la v5.2.3 à la v6.0.0.beta3. J'utilise la gemme Daterangepicker v3.0.3 et elle semble incompatible avec Rails 6.x. Mon application dépend de la gemme et j'aimerais vraiment m'en tenir à elle si possible (comment?) Et si non, quelle gemme la remplacerait?

J'ai changé ma version de gemme Rails en Edge et j'ai lancé le bundle mise à jour . Il génère ce qui suit:

Bundler could not find compatible versions for gem "actionpack":
  In Gemfile:
    jquery-datatables-rails (~> 3.4) was resolved to 3.4.0, which depends on
      actionpack (>= 3.1)

    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      actionpack (= 6.0.0.beta3)

Bundler could not find compatible versions for gem "activemodel":
  In Gemfile:
    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      activemodel (= 6.0.0.beta3)

    web-console (>= 3.3.0) was resolved to 3.7.0, which depends on
      activemodel (>= 5.0)

Bundler could not find compatible versions for gem "activerecord":
  In Gemfile:
    friendly_id (~> 5.2.4) was resolved to 5.2.5, which depends on
      activerecord (>= 4.0.0)

    pg_search (~> 2.1, >= 2.1.5) was resolved to 2.1.5, which depends on
      activerecord (>= 4.2)

    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      activerecord (= 6.0.0.beta3)

Bundler could not find compatible versions for gem "activesupport":
  In Gemfile:
    jbuilder (~> 2.5) was resolved to 2.8.0, which depends on
      activesupport (>= 4.2.0)

    pundit was resolved to 2.0.1, which depends on
      activesupport (>= 3.0.0)

    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      activesupport (= 6.0.0.beta3)

Bundler could not find compatible versions for gem "countries":
  In Gemfile:
    countries

    country_select (~> 3.1) was resolved to 3.1.1, which depends on
      countries (~> 2.0)

Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    bootstrap-daterangepicker-rails (~> 3.0, >= 3.0.3) was resolved to 3.0.3, which depends on
      railties (>= 4.0, < 5.3)

    coffee-rails (~> 4.2) was resolved to 4.2.2, which depends on
      railties (>= 4.0.0)

    devise (~> 4.5) was resolved to 4.6.2, which depends on
      railties (>= 4.1.0, < 6.0)

    jquery-rails (~> 4.3, >= 4.3.3) was resolved to 4.3.3, which depends on
      railties (>= 4.2.0)

    momentjs-rails (~> 2.17, >= 2.17.1) was resolved to 2.20.1, which depends on
      railties (>= 3.1)

    rails (~> 6.0.0.beta3) was resolved to 6.0.0.beta3, which depends on
      railties (= 6.0.0.beta3)

    sass-rails (~> 5.0) was resolved to 5.0.7, which depends on
      railties (>= 4.0.0, < 6)

    web-console (>= 3.3.0) was resolved to 3.7.0, which depends on
      railties (>= 5.0)

J'ai commenté mon gemme Daterangepicker et la mise à jour de mon bundle a fonctionné parfaitement. Je vois que la gemme dépend de railties = 4.0 . Rails v6 utilise railties> v4, ce qui est probablement la raison pour laquelle il génère une erreur. Que puis-je faire à ce sujet?

Merci d'avance.


0 commentaires

3 Réponses :


1
votes

Il convient de noter que sass-rails a également la version railties verrouillée sur <6 .

Je serais surpris que cela change car la plupart des utilisateurs du monde Rails passent au webpacker pour toutes les choses front-end (tout ce qui vivait dans le pipeline d'actifs). Il serait intéressant de regarder quelque chose comme react-rails qui vous permettrait d'utiliser react-bootstrap-daterangepicker .

Soit cela, soit vous pouvez toujours PR / fork le Daterangepicker gem . Bien que, sur la base de la (in) fréquence des commits et des PR de longue date, je pense que vous aurez peut-être plus de chance dans la voie du webpacker.


0 commentaires

0
votes

Je sais que ce n'est pas la meilleure solution, mais je l'ai résolue comme ceci:

Gemfile :

gem 'bootstrap-daterangepicker-rails', git: 'https://github.com/jordanbrock/bootstrap-daterangepicker-rails.git', ref: '6cade9deedfca1e6e55ce68b7c828f001e13f995'

Si vous avez peur de pointant vers le maître, vous pouvez également pointer vers le dernier commit comme ceci:

gem 'bootstrap-daterangepicker-rails', git: 'https://github.com/jordanbrock/bootstrap-daterangepicker-rails.git', branch: 'master'


0 commentaires

0
votes

Je ne vous suggérerais pas d'utiliser un gem avec des dépendances javascript, car Rails se déplace (comme déjà sur Rails 6) pour utiliser Webpack comme pré-processeur pour CSS et Javascript. Une meilleure solution pour travailler avec les dépendances Javascript / Jquery sur Rails, en plus d'utiliser des frameworks comme Vue.js, Angular et React, consiste à charger Jquery globalement en utilisant Webpack. De cette façon, vous pouvez avoir bootstrap & bootstrap-datepicker sur votre application, car ils existent tous les deux en tant que packages yarn / npm. Vous pouvez également faire fonctionner les fonctions Jquery avec votre application.

Voici un lien SO sur la configuration globale de Jquery avec Webpack < / p>


0 commentaires