如何在ruby中跳过要求?

dee*_*pak 2 ruby rubygems require

我可以有条件地跳过在Ruby中要求一个文件吗?

begin
  require 'aws-sdk'
rescue LoadError
  puts "aws-sdk gem not found"
end

namespace :db do
  desc "import local postgres database to heroku. user and database name is hardcoded"
  task :import_to_heroku => [:environment, "db:dump_for_heroku"] do
    # code using aws-sdk gem
  end
end
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我可以要求Ruby在rescue LoadError
我可以将整个代码包装在条件中之后不要阅读,但这是不优雅的.我试着nextreturn.

编辑:添加了一个新问题是否可以有条件地跳过在同一个文件中加载"更多"ruby代码?.抱歉.没有正确地问这个问题

izo*_*ica 7

也许exit在日志之后添加一个:

begin
  require 'aws-sdk'
rescue LoadError
  puts "aws-sdk gem not found"
  exit
end

namespace :db do
  desc "import local postgres database to heroku. user and database name is hardcoded"
  task :import_to_heroku => [:environment, "db:dump_for_heroku"] do
    # code using aws-sdk gem
  end
end
Run Code Online (Sandbox Code Playgroud)

中止函数也是在同一个调用中记录和退出:

abort("aws-sdk gem not found")
Run Code Online (Sandbox Code Playgroud)