Sha256: 78b7c72081cdb49d8aba18aa422a8a67f8e89a14e742fd228d5d5d4022f51b05

Contents?: true

Size: 1.96 KB

Versions: 16

Compression:

Stored size: 1.96 KB

Contents

module Turbo
  module Tasks
    extend self
    def run_turbo_install_template(path)
      system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{File.expand_path("../install/#{path}.rb", __dir__)}"
    end

    def redis_installed?
      Gem.win_platform? ?
        system('where redis-server > NUL 2>&1') :
        system('which redis-server > /dev/null')
    end

    def switch_on_redis_if_available
      if redis_installed?
        Rake::Task["turbo:install:redis"].invoke
      else
        puts "Run turbo:install:redis to switch on Redis and use it in development for turbo streams"
      end
    end

    def using_bun?
      Rails.root.join("bun.config.js").exist?
    end
  end
end

namespace :turbo do
  desc "Install Turbo into the app"
  task :install do
    if Rails.root.join("config/importmap.rb").exist?
      Rake::Task["turbo:install:importmap"].invoke
    elsif Rails.root.join("package.json").exist? && Turbo::Tasks.using_bun?
      Rake::Task["turbo:install:bun"].invoke
    elsif Rails.root.join("package.json").exist?
      Rake::Task["turbo:install:node"].invoke
    else
      puts "You must either be running with node (package.json) or importmap-rails (config/importmap.rb) to use this gem."
    end
  end

  namespace :install do
    desc "Install Turbo into the app with asset pipeline"
    task :importmap do
      Turbo::Tasks.run_turbo_install_template "turbo_with_importmap"
      Turbo::Tasks.switch_on_redis_if_available
    end

    desc "Install Turbo into the app with webpacker"
    task :node do
      Turbo::Tasks.run_turbo_install_template "turbo_with_node"
      Turbo::Tasks.switch_on_redis_if_available
    end

    desc "Install Turbo into the app with bun"
    task :bun do
      Turbo::Tasks.run_turbo_install_template "turbo_with_bun"
      Turbo::Tasks.switch_on_redis_if_available
    end

    desc "Switch on Redis and use it in development"
    task :redis do
      Turbo::Tasks.run_turbo_install_template "turbo_needs_redis"
    end
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/turbo-rails-2.0.5/lib/tasks/turbo_tasks.rake
turbo-rails-2.0.6 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.5 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.4 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.3 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.2 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.1 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.0 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.0.pre.rc.3 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.0.pre.rc.2 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.0.pre.rc.1 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.0.pre.beta.4 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.0.pre.beta.3 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.0.pre.beta.2 lib/tasks/turbo_tasks.rake
turbo-rails-2.0.0.pre.beta.1 lib/tasks/turbo_tasks.rake
turbo-rails-1.5.0 lib/tasks/turbo_tasks.rake