我正在为我的公司将用于执行各种任务的应用程序制作引擎。我的引擎需要使用 github_api gem 来查看和更新存储库。虽然我可以使用控制器(或模型)中的代码很好地访问 gem,但我想将这些方法放在 lib 文件夹中的一个模块中,因为我还需要连接到另一个 api 并且不要想用不应该存在的代码弄乱我的控制器或模型。
但是,似乎我的引擎不喜欢我的模块。它甚至不想加载文件,即使我在 engine.rb 文件中指定它。我将文件放在引擎的 lib/modules 文件夹中,并包含此处所述的路径。
我的错误如下:未初始化的常量 MyEngine::WelcomeController::Githubapi
就像它不会加载我的文件一样。当我尝试要求它时,它会给我错误并且不会启动服务器。
引擎.rb
module MyEngine
class Engine < ::Rails::Engine
isolate_namespace MyEngine
config.autoload_paths << File.expand_path("../lib/modules/", __FILE__)
end
end
githubapi.rb
module Githubapi
# Lists the repository branch names for dropdown-list
# param[String] repo_name the repository name as GitHub sees it
def get_repo_branches(repo_name)
branch_names = Array.new
git_connection = Github.new :oauth_token => ENV['GITHUB_TOKEN']
branches = git_connection.repos.branches('owner_name',repo_name)
branches.each do |branch|
branch_names << branch.name
end
branch_names.sort_by!{ |m| m.downcase }
return branch_names
end
end
调用控制器中的方法传递给视图总是会导致错误
@branches = Githubapi.get_repo_branches('my_repo')
任何帮助,将不胜感激。