2016-03-07 34 views
6

Bir Rake görevi ile çalışan a gem var. Görev lib/tasks/<namespace>.rake'da tanımlanmıştır. Rake tasks inside gem not being found'u okuduktan sonra, .gemspec'un görevi tanımlayan dosyayı içerdiğini onaylıyorum; including rake tasks in gems da önerildiği gibi a railtie which should be including the tasks da var. Yine de Rails 4.1 uygulamasının Rake görevini yüklemiyor gibi görünmüyor.Bu mücevher neden Rails uygulamasına komisyon görevleri eklemiyor?

Neyi eksik?

cevap

3

Sorun gem ile değildi, ancak yol app ile dahil edildi. Gemfile yılında

, bu işler ve tırmık görevi içerir:

gem 'gem_fresh' 

Bu ancak işler tırmık görevi içermez:

group :development do 
    gem 'gem_fresh' 
end 

Bu nasıl nedeniyle gibi görünüyor Bundler Rails uygulamalarında taşlar gerektirir. From the documentation:

Varsayılan olarak, bir Raylar uygulaması Raylar çevreye sizin Gemfile grupları bağlayan senin application.rb, içinde Bundler.require(:default, Rails.env) çağırır oluşturdu.

Rails.env argüman ben rake -T çağırdığınızda durumda gibi görünüyor :development grubunu kapsayacak şekilde değerlendirerek olmadığını nedense, mücevher Bundler.require -d olacak ve olmasaydım tırmık görevleri 'gitmeyeceklerini Yüklenmelidir.

:development grubunu içermemesi gerçeği tek bir Bundler "gotcha" gibi görünüyor, ancak en azından şimdi varsayılan gruba taşımanın konuyu çözdüğünü ve gemiyle ilgili bir sorun olmadığını biliyorum.

3

Sadece başarıyla mücevher test edilmiş ve bunun içinde tırmık görevleri ile bir sorunum görebilirsiniz: Derhal Görebildiğim

  • Ben Gemfile için gem_fresh eklendi ve bundle ran, mücevher
  • yüklü tırmık listesinde tırmık mevcut:

    $ rake -T outdated 
    rake gem_fresh:outdated # outdated 
    
  • Sonrakullanmak railtie.rb dosya güncellendiyöntem lib/task/metrics.rake tanımlanan tırmık yük ve yeniden kullanılabilir tırmıklar arandı için:

    # lib/gem_fresh/railtie.rb: 
    rake_tasks do 
        namespace :gem_fresh do 
        desc "outdated" 
        task :outdated => :environment do 
         GemFresh::Reporter.new.report 
        end 
        end 
    
        load "tasks/metrics.rake" 
    end 
    
    $ rake -T outdated 
    rake gem_fresh:outdated  # outdated 
    rake metrics:outdated_gems # display outdated gem version metrics 
    

Yani, sizin mücevher ile bir sorunum görebilirsiniz. Railtie'de her iki yöntem (inline tırmık, aynı zamanda yük yönteminin kullanılması gibi) de işe yarıyor gibi görünüyor. Fark ettiğim tek fark, bunu 4.2 raylar üzerinde test ettiğimdi, bunun bir fark yaratacağından kuşkuluyum.

Gem'i Gemfile'a koydun mu? Buradan kaldırırsam, tanımlı gem_fresh tırmıklarını göremiyorum.

+1

Bana cevabı verdin! – pjmorse

-1

Tamam

gem_fresh .gemspec dahildir ancak

şu sorunun nedeni oluştu olan Gemfile

eksik olması gerekir. doğrulayabilirsiniz.