此问题已多次提出。过去的解决方案围绕着未添加和提交的Git文件。如果从各方面来看,Git已经得到妥善处理并且错误仍然存在,那该怎么办呢。
rake aborted!
Gem::InvalidSpecificationException: ["Gemfile", "Gemfile.lock",
"lib/sysstandards/ext/abstract_interface.rb",
"lib/sysstandards/ext/mainframe_constants.rb",
"lib/sysstandards/ext/text_box_formatters.rb", "spec/ext",
"spec/ext/abstract_interface_spec.rb",
"spec/ext/text_box_formatters_spec.rb"] are not files
上面列出的所有文件都是新文件。它们被添加到存储库中。他们承诺了。该分支机构定位于掌握。子分支合并为主。
dvn@mint01 ~/RubymineProjects/SysStandards $ git status
On branch master
nothing to commit, working directory clean
文件显示在git列表中。
dvn@mint01 ~/RubymineProjects/SysStandards $ git ls-files
Gemfile
Gemfile.lock
...
lib/sysstandards.rb
lib/sysstandards/chgtable.rb
lib/sysstandards/ext/abstract_interface.rb
lib/sysstandards/ext/file_flocked.rb
lib/sysstandards/ext/load_params.rb
lib/sysstandards/ext/mainframe_constants.rb
lib/sysstandards/ext/text_box_formatters.rb
...
spec/ext/abstract_interface_spec.rb
spec/ext/text_box_formatters_spec.rb
我真的迷失了这个。我看了类似的问题,按照他们的建议,但无济于事。我无法绕过这个,因此,我无法建立宝石。请告诉我您可能需要的其他信息。
我即将删除.git并从头开始。但是,如果我这样做,会有很多历史遗失。我会等到星期一,看看是否有人有任何指导。但是周一,我想我会放弃Git并切换到Fossil。
感谢您的时间和考虑, DVN
更新以显示gemspec
spec = Gem::Specification.new do |s|
s.name = 'SysStandards'
s.version = '3.0.0'
s.has_rdoc = true
s.extra_rdoc_files = ['readme.md', 'LICENSE']
s.summary = 'Standards Library'
s.description = s.summary
s.author = 'Don V Nielsen'
s.email = 'donvnielsen@gmail.com'
# s.executables = ['your_executable_here']
s.files = %w(LICENSE readme.md Rakefile Gemfile Gemfile.lock Rakefile) + Dir.glob("{lib,spec}/**/*")
s.require_path = "lib"
s.bindir = "bin"
end
GEM
rake (12.0.0)
rspec (3.5.0)
PLATFORMS
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]
x64-mingw32
x86-mingw32
BUNDLED WITH
1.10.6
使用文件列表进行更新
dvn@mint01 ~/RubymineProjects/SysStandards $ ls -l
total 40
drwx------ 2 dvn dvn 4096 Oct 30 11:16 coverage
drwxr-xr-x 2 dvn dvn 4096 Feb 23 09:46 doc
-rw-r--r-- 1 dvn dvn 139 Feb 23 12:20 Gemfile
-rw-r--r-- 1 dvn dvn 629 Feb 23 12:20 Gemfile.lock
drwxr-xr-x 3 dvn dvn 4096 Feb 23 12:20 lib
-rw-r--r-- 2 dvn dvn 65 Apr 1 2013 LICENSE
drwxr-xr-x 3 dvn dvn 4096 Feb 22 18:38 pkg
-rw-r--r-- 1 dvn dvn 1169 Feb 23 15:39 Rakefile
-rw-r--r-- 1 dvn dvn 890 Feb 23 12:20 readme.md
drwx------ 6 dvn dvn 4096 Feb 23 12:20 spec
dvn@mint01 ~/RubymineProjects/SysStandards $ ls -l ./lib/sysstandards/ext
total 20
-rw-r--r-- 1 dvn dvn 1259 Feb 23 12:20 abstract_interface.rb
-rw-r--r-- 1 dvn dvn 388 Feb 23 12:20 file_flocked.rb
-rw-r--r-- 1 dvn dvn 345 Feb 23 12:20 load_params.rb
-rw-r--r-- 1 dvn dvn 540 Feb 23 12:20 mainframe_constants.rb
-rw-r--r-- 1 dvn dvn 1366 Feb 23 12:20 text_box_formatters.rb
dvn@mint01 ~/RubymineProjects/SysStandards $ ls -l ./spec/ext
total 8
-rw-r--r-- 1 dvn dvn 747 Feb 23 12:20 abstract_interface_spec.rb
-rw-r--r-- 1 dvn dvn 941 Feb 23 12:20 text_box_formatters_spec.rb
那么什么是File.symlink
从gem :: specification.rb中的以下代码抛出异常:
@files.delete_if { |x| File.directory?(x) && !File.symlink?(x) }
@test_files.delete_if { |x| File.directory?(x) && !File.symlink?(x) }
@executables.delete_if { |x| File.directory?(File.join(@bindir, x)) }
@extra_rdoc_files.delete_if { |x| File.directory?(x) && !File.symlink?(x) }
@extensions.delete_if { |x| File.directory?(x) && !File.symlink?(x) }
non_files = files.reject { |x| File.file?(x) || File.symlink?(x) }
unless not packaging or non_files.empty? then
raise Gem::InvalidSpecificationException,
"[\"#{non_files.join "\", \""}\"] are not files"
end
@files进入此代码,包含46个条目:文件和目录。 @ files.delete_if应删除目录,结果是剩余的36个条目。在36名幸存者中有' spec / ext',这是一个每个目录-l':
dvn@mint01 ~/RubymineProjects/SysStandards/spec $ ls -l
total 32
-rw-r--r-- 1 dvn dvn 1353 Feb 23 12:20 change_table_spec.rb
drwx------ 3 dvn dvn 4096 Oct 30 11:17 data
drwxr-xr-x 2 dvn dvn 4096 Feb 23 12:20 ext
执行files.reject时,结果是non_files中的七个条目:一个目录和六个文件。这是异常的原因。所以看来File.symlink?正在触发这个问题。什么是File.symlink,什么设置值,以及如何设置值?
答案 0 :(得分:0)
删除/ pkg文件夹并重新运行rake gem
解决了问题。
问题源于现有的/ pkg文件夹。我通过向Rakefile和specification.rb添加puts Dir.getwd
来确定问题。 Rakefile从我的项目文件夹和specification.rb收集了包构建文件夹中的项目文件。
Rakefile : /home/dvn/RubymineProjects/SysStandards
Specification: /home/dvn/RubymineProjects/SysStandards/pkg/SysStandards-3.0.0
因此,由于未知原因,包构建文件夹未使用添加/更改的文件进行更新。我假设某些决定确定该文件夹不需要更新。
删除/ pkg文件夹修复了问题,强制gem进程重建其pkg构建文件夹,从而复制受影响的文件。
我担心Gemfile和Rakefile最终会出现在non_files
列表中。这两个文件从一开始就存在于项目中;它们不是新文件。那究竟是什么引发了他们的进展。
不幸的是,我是个白痴。我通过删除/ pkg文件夹解决了这个问题。我应该重命名它,保留其内容。咄。现在我没有什么可比较的了。