我有很多脚本需要包含相同的标题。
将它们包含在每个脚本中的更好方法是什么
# -*- encoding : utf-8 -*-
#!/usr/bin/ruby
require 'yaml'
require "json"
require 'pry'
require "selenium-webdriver"
require 'nokogiri'
require 'active_support/all'
require 'yaml'
require 'date'
require 'awesome_print'
require 'mongo'
require File.expand_path('./form_action.rb', File.dirname(__FILE__))
require File.expand_path('./schedule_manager.rb', File.dirname(__FILE__))
require File.expand_path('../common_helper.rb', File.dirname(__FILE__))
require File.expand_path('../mongodb_helper.rb', File.dirname(__FILE__))
require File.expand_path('../webdriver_helper.rb', File.dirname(__FILE__))
require File.expand_path('../lib/db_manager.rb', File.dirname(__FILE__))
require File.expand_path('../lib/app_util.rb', File.dirname(__FILE__))
require File.expand_path('../lib/schedule_manager_base.rb', File.dirname(__FILE__))
require File.expand_path('../lib/class_template.rb', File.dirname(__FILE__))
include Mongo
include MongodbHelper
include AppUtil
我会将common_includes
添加到client1.rb
,
但是SIBLINGS
不起作用。
├── common_helper.rb
├── common_includes.rb
├── config
│ ├── database.yml
│ └── schedule.rb
├── client1
│ ├── config.yml
│ ├── client1.rb
│ └── schedule_manager.rb
└── webdriver_helper.rb
├── lib
│ ├── app_util.rb
│ ├── class_template.rb
│ ├── db_manager.rb
│ └── schedule_manager_base.rb
答案 0 :(得分:2)
如下所示:
REQUIRES = %w(yaml json pry selenium-webdriver nokogiri active_support/all yaml date awesome_print mongo)
SIBLINGS = %w(form_action schedule_manager)
COMMON = %w(common_helper mongodb_helper webdriver_helper db_manager.rb lib/app_util lib/schedule_manager_base lib/class_template.rb)
INCLUDES = %i(Mongo MongodbHelper AppUtil)
REQUIRES.each &method :require
SIBLINGS.each do |f|
File.expand_path("./#{f}.rb", File.dirname(__FILE__))
end
COMMON.each do |f|
File.expand_path("../#{f}.rb", File.dirname(__FILE__))
end
module CommonIncludes
def self.included base
INCLUDES.each { |inc| base.include Kernel.const_get(inc) }
end
end
进入一个非常文件common_includes.rb
,无论您需要它,请致电:
require 'common_includes'
include CommonIncludes
这是或许不太常见的require / include方法,以防您需要逐个明确指定文件列表。
NB 要管理外部依赖项,每个人都希望使用捆绑器,如Mike Slutsky所说。
UPD 不要犹豫,使用Dir["./*.rb"]
收集所有给定目录的文件。
答案 1 :(得分:0)
如果我正确理解您的问题,您正在寻找一种方法,您可以包含所有这些标题,而无需将它们复制并粘贴到整个地方。
您可以实现此目的的一种方法是将所有这些标头放入一个文件中,并在脚本中包含该文件:
例如,在headers.rb中:
# -*- encoding : utf-8 -*-
#!/usr/bin/ruby
require 'yaml'
require "json"
require 'pry'
require "selenium-webdriver"
require 'nokogiri'
require 'active_support/all'
require 'yaml'
require 'date'
require 'awesome_print'
require 'mongo'
require File.expand_path('./form_action.rb', File.dirname(__FILE__))
require File.expand_path('./schedule_manager.rb', File.dirname(__FILE__))
require File.expand_path('../common_helper.rb', File.dirname(__FILE__))
require File.expand_path('../mongodb_helper.rb', File.dirname(__FILE__))
require File.expand_path('../webdriver_helper.rb', File.dirname(__FILE__))
require File.expand_path('../lib/db_manager.rb', File.dirname(__FILE__))
require File.expand_path('../lib/app_util.rb', File.dirname(__FILE__))
require File.expand_path('../lib/schedule_manager_base.rb', File.dirname(__FILE__))
require File.expand_path('../lib/class_template.rb', File.dirname(__FILE__))
include Mongo
include MongodbHelper
include AppUtil
然后你的脚本:
require 'path/to/headers'