【问题标题】:Invalid date format specification in gemspecgemspec 中的无效日期格式规范
【发布时间】:2011-11-09 13:45:40
【问题描述】:

当我尝试在 Windows 中使用 gems 时出现以下错误,我还提到了 this stackoverflow post 并更新了 ruby​​gems 和 rails。但没有什么能解决问题。

以下是完整的错误,

D:\> 宝石环境 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /tilt-1.3.3.gemspec]:规范中的无效日期格式:“2011-08-25 00:00:00 .000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /execjs-1.2.4.gemspec]:规范中的无效日期格式:“2011-08-03 00:00: 00.000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /temple-0.3.3.gemspec]:规范中的无效日期格式:“2011-08-26 00:00: 00.000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /guard-0.6.3.gemspec]:规范中的无效日期格式:“2011-09-01 00:00:0 0.000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /guard-livereload-0.3.1.gemspec]:规范中的无效日期格式:“2011-09 -01 00:00:00.000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /rack-cache-1.0.3.gemspec]:规范中的无效日期格式:“2011-08-27 00 :00:00.000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /tilt-1.3.3.gemspec]:规范中的无效日期格式:“2011-08-25 00:00:00 .000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /execjs-1.2.4.gemspec]:规范中的无效日期格式:“2011-08-03 00:00: 00.000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /temple-0.3.3.gemspec]:规范中的无效日期格式:“2011-08-26 00:00: 00.000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /guard-0.6.3.gemspec]:规范中的无效日期格式:“2011-09-01 00:00:0 0.000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /guard-livereload-0.3.1.gemspec]:规范中的无效日期格式:“2011-09 -01 00:00:00.000000000Z" [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications 中的无效 gemspec /rack-cache-1.0.3.gemspec]:规范中的无效日期格式:“2011-08-27 00 :00:00.000000000Z" RubyGems 环境: - 红宝石版本:1.7.2 - 红宝石版本:1.8.7(2011-06-30 补丁级别 352)[i386-mingw32] - 安装目录:D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8 - RUBY 可执行文件:D:/RailsInstaller/Ruby1.8.7/bin/ruby.exe - 可执行目录:D:/RailsInstaller/Ruby1.8.7/bin - 红宝石平台: - 红宝石 - x86-mingw32 - 宝石路径: -D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8 - C:/文档和设置/jeygokul/.gem/ruby/1.8 - 宝石配置: - :update_sources => 真 - :详细 => 真 - :基准 => 假 - :回溯 => 假 - :bulk_threshold => 1000 - 远程资源: - http://rubygems.org/

【问题讨论】:

    标签: ruby-on-rails rubygems


    【解决方案1】:
    cd vendor/bundle/ruby/1.9.x/specifications
    sed -i 's/ 00\:00\:00.000000000Z//g' *
    

    【讨论】:

      【解决方案2】:

      如果您在 Ubuntu 11.04 上遇到此错误,我的解决方案是以下命令行:

      $ sudo apt-get install ruby1.9.1
      

      执行此操作后,您将不会收到日期错误。

      【讨论】:

        【解决方案3】:

        “gem install ruby​​gems-update”,“update_rubygems”,然后“gem pristine --all”是在前面列出的所有方法都不起作用之后为我解决问题的组合。

        【讨论】:

          【解决方案4】:

          除了运行gem update --system 之外,我还对每个报告为坏的项目gem env 使用了gem install <gem with bad gemspec>。这清除了我机器上的错误。

          【讨论】:

          • 您可以使用“gem pristine [gemname]”重新安装或执行“gem pristine --all”以从缓存中重新安装 gem 而无需重新下载。
          【解决方案5】:

          尝试在 Ubuntu 11.10 上安装 GEM 时遇到同样的问题。

          Invalid gemspec in [/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]: invalid date format in specification: "2011-12-28 00:00:00.000000000Z"
          

          以上选项对我不起作用。 gem env 报告了以下内容:

          RubyGems Environment:
            - RUBYGEMS VERSION: 1.7.2
            - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
          

          所以我推测这个问题是因为我需要安装更新版本的 RubyGems。

          发出gem update --system 发出以下警告:

          ERROR:  gem update --system is disabled on Debian, because it will overwrite the content of the rubygems Debian package, and might break your Debian system in subtle ways. The Debian-supported way to update rubygems is through apt-get, using Debian official repositories.
          If you really know what you are doing, you can still update rubygems by setting the REALLY_GEM_UPDATE_SYSTEM environment variable, but please remember that this is completely unsupported by Debian.
          

          但是我终于能够通过发出以下命令将rubygems 更新到 1.8.15:

          sudo gem install rubygems-update && update_rubygems
          

          之后一切正常,祝你好运! :)

          【讨论】:

          • 对我来说,在 Ubuntu 上,sudo apt-get purge rubygems 后跟 sudo apt-get install rubygems 然后再次安装所有 gem。尴尬,但至少它起作用了:P(以上对我不起作用)
          【解决方案6】:

          rvm gemset clear 然后bundle install 为我工作!

          【讨论】:

            【解决方案7】:

            [/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec] 中的无效 gemspec:规范中的无效日期格式:“2011-09-09 00:00:00.000000000Z”

            解决此类问题的简单方法是导航到文件……例如。

            步骤 1. cd /var/lib/gems/1.8/specifications
            步骤 2. 在您选择的编辑器中打开文件 (chronic-0.6.4.gemspec)... (geditchronic-0.6.4.gemspec)
            步骤 3. 将 s.date = %q{2011-10-13 00:00:00.000000000Z} 更改为 s.date = %q{2011-10-13}

            干杯:)

            【讨论】:

              【解决方案8】:

              我有太多宝石无法一一修复,尝试update_rubygemsgem pristine --all 仍然没有运气。

              所以我使用rvm clear gemset 删除所有带有错误gemspec 的gem。 执行 bundle install 重新安装所有 gem,和 Viola!

              【讨论】:

              • Unrecognized command line argument: 'clear' ( see: 'rvm usage' )
              • rvm gemset empty your_gemset_name_or_global
              【解决方案9】:

              这不是一个真正的答案,但如果有人想深入挖掘,我在这里找到了这个 gemspec 规范:http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html(向下滚动到 date=date() 并单击以显示源代码):

              @date = case date
              when String then
                if %r\A(\d{4})-(\d{2})-(\d{2})\Z/ =~ date then
                  Time.utc($1.to_i, $2.to_i, $3.to_i)
                else
                  raise(Gem::InvalidSpecificationException,
                        "invalid date format in specification: #{date.inspect}")
                end
              when Time, Date then
                Time.utc(date.year, date.month, date.day)
              else
                TODAY
              end
              

              所以我猜这是解析 gemspec 的代码,它看起来就像显示错误的文件中的日期格式不符合这个。

              我所做的只是按照上面的建议手动修复那些有问题的 gemspecs(将日期更改为“yyyy-mm-dd”,它对我有用。

              我拥有的所有遇到此问题的 ruby​​gem 规格也有一行

              s.rubygems_version = %q{1.3.5}

              所以我猜这些只是旧宝石?那些 %q{...} 到底是怎么回事?

              【讨论】:

                【解决方案10】:

                我已经通过upgrading my RubyGems to 1.8.10 解决了这个问题

                gem update --system
                

                编辑:您也可以尝试(按照 ZeissS 的建议)

                gem install rubygems-update
                update_rubygems
                

                【讨论】:

                • 我有 1.8.10 并且仍然得到这个
                • 尝试对导致这些警告的 g​​em 运行“gem pristine [gemname]”。
                • 这对我也不起作用——因为“gem update --system”命令导致了完全相同的问题,而“gem pristine”什么也没做。在重新运行 gem 更新之前,我必须遵循 @Romain_Tribes 的解决方案并手动删除 gemspec 文件
                • 这在 ubuntu 上不是一个很好的选择,尤其是对于 ruby​​ 的休闲用户。
                • GaborKomaromi 在下面的回答(或 cmets 中的发现之一)有效。这个没有。
                【解决方案11】:

                我已通过更改 D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec 中的相应行来解决此问题“无效的日期格式规范” s.date =时间.现在 而不是 s.date = "2011-08-25 00:00:00.000000000Z" 同样可以使用其他文件。

                【讨论】:

                  【解决方案12】:

                  这些答案中提到的各种解决方案对我不起作用。起作用的是重新安装有问题的 gem 的特定版本。在你的情况下,看起来像:

                  gem install tilt   -v 1.3.3
                  gem install execjs -v 1.2.4
                  gem install temple -v 0.3.3
                  gem install guard  -v 0.6.3
                  gem install guard-livereload -v 0.3.1
                  gem install rack-cache -v 1.0.3
                  

                  我认为 gem pristine xxx yyy zzzgem pristine --all 可能不会总是(曾经?)进入 gem 存储库,而 gem install xxx -v v.r.m 会。

                  无论如何,重新安装有问题的 gems 版本对我有用,虽然这很乏味...

                  【讨论】:

                    【解决方案13】:

                    在我的例子中,甚至没有安装引用的 gem 版本。我有那些宝石,但不是宝石规格导致错误的版本。所以,我只是删除了每个 /path/to/specifications/offending-X.Y.ZZ.gemspec 文件。

                    【讨论】:

                      【解决方案14】:

                      通过运行gem update --system 然后gem update 解决。

                      【讨论】:

                      • 为我工作,我只是在执行 gem update --system 后得到了那个错误,他们中的大多数在 gem 更新后消失了。对于其他人,我删除了 gemspec 文件。
                      【解决方案15】:

                      最终的解决方案是这样的:

                      在 Ruby 目录中搜索“spec”文件: *C:\Ruby187\lib\ruby\gems\1.8\specifications*

                      如果 gemspec 文件包含如下内容: s.date = %q{2011-10-13 00:00:00.000000000Z} 然后删除 00:00:00.000000000Z 部分: s.date = %q{2011-10-13}

                      保存这些gemspec文件后,问题就解决了。

                      【讨论】:

                      • 这对我有用(ruby 1.8.7 / win7),其他解决方案没有
                      • 在 ubuntu 上使用 ruby​​ 1.8.7,gem 1.7.2 像魅力一样工作。谢谢!
                      • 这将从规范文件中删除字符串:“find . -type f | xargs perl -pi -e 's/00:00:00\.000000000Z//'”
                      • 找到 /var/lib/gems/1.8/specifications -name *.gemspec -type f | xargs perl -pi -e 's/ 00:00:00\.000000000Z//' 在 Ubuntu 中
                      • sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
                      【解决方案16】:

                      升级到 10.10 后,我在 ubuntu 上遇到了同样的问题。以上都不适合我。我必须从http://rubygems.org/pages/download 安装 update_rubygems 脚本并运行一次。之后一切正常。

                      【讨论】:

                        【解决方案17】:

                        正如迈克尔在评论中所说:

                        gem pristine --all
                        

                        【讨论】:

                          【解决方案18】:

                          这些解决方案都不适合我。 为了修复它,我删除了上述目录的所有内容(some/path/to/specification/),然后安装了我需要的 gem(实际上是 Bundler 然后捆绑安装)。

                          【讨论】:

                          • 这个简单、快速、有效。在其他任何人之前尝试这个。
                          • 唯一对我也有效的解决方案。但不确定这是否是正确的解决方法。
                          • 这对我有用。它运行 gem udpate --system 让我遇到了这个问题!
                          猜你喜欢
                          • 2011-08-11
                          • 1970-01-01
                          • 1970-01-01
                          • 2015-02-07
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2020-04-14
                          • 2017-01-27
                          相关资源
                          最近更新 更多