2017-09-06 21 views
0

私はgitlabにコミットするバイナリファイルを無視するようにフックを追加しようとするので、私は/opt/gitlab/embedded/service/gitlab-shell/libに新しいのpython(の.py)フックを追加しましたし、私は/opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.rbruby​​フックでpythonファイルを読み込む方法は?

でそのファイルをロードしかし、私は、ファイルをコミットしようとしたとき、私

require_relative': cannot load such file -- /opt/gitlab/embedded/service/gitlab-shell/lib/gitlab_ignore_binary.py (LoadError) remote: from hooks/pre-receive:17:inで私の前受けるフックファイルが

です:フック/事前に受信:17で、以下の例外が

リモート画面

をコミットしました
#!/opt/gitlab/embedded/bin/ruby 
    # Fix the PATH so that gitlab-shell can find git-upload-pack and friends. 
    ENV['PATH'] = '/opt/gitlab/bin:/opt/gitlab/embedded/bin:' + ENV['PATH'] 

    #!/usr/bin/env ruby 
    #!/usr/bin/env python 

# This file was placed here by GitLab. It makes sure that your pushed commits 
# will be processed properly. 

refs = $stdin.read 
key_id = ENV.delete('GL_ID') 
protocol = ENV.delete('GL_PROTOCOL') 
repo_path = Dir.pwd 
gl_repository = ENV['GL_REPOSITORY'] 

require_relative '../lib/gitlab_ignore_binary.py' 
require_relative '../lib/gitlab_custom_hook' 
require_relative '../lib/gitlab_reference_counter' 
require_relative '../lib/gitlab_access' 


# It's important that on pre-receive `increase_reference_counter` gets executed 
# last so that it only runs if everything else succeeded. On post-receive on the 
# other hand, we run GitlabPostReceive first because the push is already done 
# and we don't want to skip it if the custom hook fails. 
if GitlabAccess.new(gl_repository, repo_path, key_id, refs, protocol).exec && 
    GitlabCustomHook.new(repo_path, key_id).pre_receive(refs) && 
    GitlabReferenceCounter.new(repo_path).increase 

    exit 0 
else 
    exit 1 
end 

なぜ.pyファイルを読み込めないのですか?

答えて

0

Kernel#requireからのこの基本的なスニペットは、おそらくあなたのためにそれを合計する必要があります

ファイル名に拡張子「.RB」を持っている場合、それはソースファイルとしてロードされます。拡張子が ".so"、 ".o"、 ".dll"、または現在のプラットフォーム上のデフォルト共有ライブラリ拡張である場合、Rubyは共有ライブラリをRuby拡張としてロードします。それ以外の場合、Rubyは見つかるまで名前に ".rb"、 ".so"などを追加しようとします。指定されたファイルが見つからない場合、LoadErrorが発生します。

どのようにこれが動作すると思われましたか? RubyインタプリタはPythonファイルをどのように扱うのですか?

+0

私はフックを書こうとしたので、私はPythonでしようとしましたが、今はそのコードをルビーに変更する必要があります。何をすべきか? –

関連する問題