如何在ruby中跳过要求?
我可以有条件地跳过在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
在上面的代码中,我可以要求Ruby在rescue LoadError
后不要读取
我可以将整个代码包装在条件中,但这是不优雅的。 我next
试了return
。
编辑:添加了一个新问题我是否可以有条件地跳过在同一个文件中加载“更多”ruby代码? 。 抱歉。 没有正确地问这个问题
我已经救出LoadError但我希望如果执行LoadError,则不应该执行更多代码。 在给出的示例中,不应调用rake任务db:import_to_heroku
然后做:
begin require 'aws-sdk' 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 rescue LoadError puts "aws-sdk gem not found" end
也许在日志后添加一个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
中止函数也是在同一个调用中记录和退出:
abort("aws-sdk gem not found")