【问题标题】:Invalid gemspec because of the date format in specification由于规范中的日期格式,gemspec 无效
【发布时间】:2011-08-11 22:06:14
【问题描述】:

当我在 Gemfile 中包含我制作的 gem 时,感谢 Bundler(版本 1.0.12),然后我尝试像这样捆绑或耙:

$ rake

我收到此错误消息:

Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"

我在最后一个 Mac OS X (10.6.4) 上,使用:

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.4.0]

和:

$ gem -v
Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
1.7.2

我真的不知道如何解决这个问题。感谢您的任何想法。

【问题讨论】:

  • 我现在经常收到这些错误!!!你是怎么修的?到目前为止,两个答案都没有帮助......
  • 大家建议的那个,是只读文件。我怎样才能改变它?

标签: rubygems bundler ruby-1.9 ruby-1.9.2


【解决方案1】:

在许多这些略有不同的机器状态下,重新安装 gem 可能是解决方案。

就我而言:

cd /Library/Ruby/Gems/1.8/specifications &&
sudo rm -rf *

就我而言,其他更有创意的解决方案都失败了。

我的问题是在尝试使用 cocoapods 时收到Invalid gemspec。我再次运行gem install cocoapods,一切都很顺利。

【讨论】:

    【解决方案2】:

    以下是为所有 gem 修复此问题的命令:

    perl -p -i -e 's/ 00:00:00.000000000Z//' ~/gems/specifications/*.gemspec
    

    它将s.date = %q{2011-05-21 00:00:00.000000000Z} 转换为s.date = %q{2011-05-21},应该可以解决您的问题。

    【讨论】:

    • 在执行此操作之前进行快速备份的好技巧:git init . && git commit -am "backup
    • 为什么要更改日期格式,它说我没有权限这样做。怎么办?
    • @chhantyal 然后你需要以 sudo 运行它。非常感谢你做的这些!为我节省了很多时间。
    【解决方案3】:

    这是我修复“规范中的无效日期格式”错误的方法:

    1.) 转到位于以下位置的规范文件夹:

    /usr/local/lib/ruby/gems/1.8/specifications/

    2.) 找出导致问题的规范。

    3.) 将s.date = %q{2011-05-21 00:00:00.000000000Z} 更改为s.date = %q{2011-05-21}

    这对我来说是一个胜利!祝你好运

    【讨论】:

    • 辛苦了,这让我大吃一惊!
    • 为我工作!我在安装了 Ruby 1.8 的 Windows XP 上。 em.websocket-0.3.2.gemspec 在尝试使用“livereload”(livereload.com)时为我抛出了这个错误。
    • 在慢性 1.6.4 上的 linux 上也为我工作
    • 它修复了一个gem的问题,但是跟随安装的gem可能会再次导致此错误。
    • 这快把我逼疯了...我应该更改 50 个 3rd 方宝石的 gemspec 吗?为什么他们还没有更新 gemspecs,一年过去了..
    【解决方案4】:

    shotgun 方法:卸载所有 gem 并重新运行 bundler。

    1. gem list --no-version | xargs gem uninstall -aIx
    2. rm -i `rvm gemdir`/specifications/*.gemspec
    3. gem update --system
    4. gem install bundler
    5. bundle install

    【讨论】:

    • 如果您使用.rvmrc 文件,请小心运行第 2 行,因为 gemdir 可能会产生额外的输出。
    【解决方案5】:

    现在还是有这个问题。更新 Rubygems 解决了这个问题:

    gem update --system
    

    【讨论】:

      【解决方案6】:

      请注意 Damian Nowak 的评论。这些命令可能会弄乱你的 ruby​​gems!

      在 Ubuntu 11.10 上,以下解决了此错误:

      sudo gem install rubygems-update
      sudo update_rubygems     
      

      以下可能适用于某些系统,但不适用于基于 Debian:

      sudo gem update --system
      

      【讨论】:

      • 很好,也适用于 oneiric 的最终版本。但这似乎清除了所有手动安装的 gem。
      • 不要使用它。它弄乱了我的红宝石。我不得不 rm -rf 很多东西,并从 repo 中恢复为原始的 ruby​​gems。要么完全手动安装 ruby​​gems,要么使用 Ubuntu 提供的 ruby​​gems。或者,您可以在 PPA 中查找当前的红宝石。 (我希望我能撤消大约一个月前的 +1)
      • @DamianNowak 很抱歉听到这个消息。我在答案中添加了警告!
      【解决方案7】:

      正如 Ben Hall 所说,您必须修复可能因系统而异的 gemspec 文件。要知道是什么文件,请查看错误报告中告诉的文件,例如:

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

      在此示例中,您必须编辑“/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec”文件并将“2011-12-28 00:00:00.000000000Z”更改为“2011-12” -28" 在 s.date 选项中。

      【讨论】:

        【解决方案8】:

        即使您安装了具有有效日期格式的 gem 的最新版本,也请确保在之后gem cleanup GEMNAME,因为gem 仍然会抱怨旧库的规范。

        【讨论】:

          【解决方案9】:

          (直到错误修复进入 Rubygems 的稳定版本)我通过使用 gem 命令的 --version 开关重新安装任何生成警告的 g​​em 的相同版本来解决它。

          【讨论】:

            【解决方案10】:

            这更像是对本·霍尔的回答的评论,但我似乎还没有这种特权

            gem 更新似乎不起作用,我认为由于日期格式错误,它甚至无法加载 gem。手动更改日期太令人沮丧,无法一一进行,所以一个 grep:

            grep -i *.gemspec -e '.*s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}
            

            对于 sed:

            sed -i -e 's/\(.*\)s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}/\1s.date = %q\{\2}/p' ./*.gemspec
            

            风险自负!! 我仍然是 sed 新手,但它对我有用 ;)

            【讨论】:

              【解决方案11】:

              这是我的环境:

              RubyGems Environment:
              - RUBYGEMS VERSION: 1.8.10
              - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.1.0]
              - INSTALLATION DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app
              - RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
              - EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app/bin
              - RUBYGEMS PLATFORMS:
                - ruby
                - x86_64-darwin-11
              - GEM PATHS:
                 - /Users/user/.rvm/gems/ruby-1.9.2-p290@app
                 - /Users/user/.rvm/gems/ruby-1.9.2-p290@global
              - GEM CONFIGURATION:
                 - :update_sources => true
                 - :verbose => true
                 - :benchmark => false
                 - :backtrace => false
                 - :bulk_threshold => 1000
              - REMOTE SOURCES:
                 - http://rubygems.org/
              

              我终于找到了一个原因/一种方法来防止我的系统出现这些错误。我只是恢复到 Cucumber 和 Cucumber-rails 版本 1.0.2。使用最新版本是这样做的...

              【讨论】:

                【解决方案12】:

                在我的 slicehost 服务器上,规范文件夹位于不同的位置。这是路径:

                /usr/lib/ruby/gems/1.8/规范

                提供的错误应该给出规范文件夹的路径。

                【讨论】:

                  【解决方案13】:

                  有同样的问题。它看起来像 ruby​​gems 中的错误。这是修复它的提交:https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

                  您需要将 ruby​​gems 和 bundler 更新到最新版本。如果在那之后您仍然遇到问题,那么您可能需要删除并重新安装任何给您带来问题的 gem。

                  【讨论】:

                  • 好吧,除了 Redmine 使用自己的 2.3.11 版本的 Rails,Rails 2.3.11 失败,RubyGems >= 1.7.0,你提到的提交日期为 2011 年 5 月 19 日,即发布-1.7.0(2011 年 4 月 1 日)。猜猜在这种情况下您需要编辑规范文件。
                  【解决方案14】:

                  您可以升级您的gem。要解决此问题,您可以直接编辑 gemspecfile - 来自

                  2011-04-21 00:00:00.000000000Z
                  

                  YYYY-MM-DD
                  

                  或者 也升级你的导轨

                  sudo gem update rails
                  

                  它会解决问题。

                  【讨论】:

                  • @Meltemi 它将在specifications 目录下这是我的specifications 目录路径-/home/sayuj/.rvm/gems/ruby-1.9.2-p180/specifications/
                  • +1 用于更新 rails - 它确实解决了问题,尽管它在开始时会引发相同的警告,但它安装正确并且不再出现问题。
                  【解决方案15】:

                  不要指定时间...只是日期。 2011-04-21 应该可以正常工作。

                  【讨论】:

                  • Gem::Specification.new 做 |s| s.name = "myplugin" s.version = "1.0.0" s.platform = Gem::Platform::RUBY s.authors = ["..."] s.email = ["..."] s .homepage = "http://..." s.summary = %q{...} s.description = %q{...} s.rubyforge_project = "myplugin" s.files = git ls-files.split ("\n") s.test_files = git ls-files -- {test,spec,features}/*.split("\n") s.require_paths = ["lib"] end
                  • 感谢您的回答。我同意你的看法,但我没有在 myplugin.gemspec 文件中使用任何日期或日期时间。 Gem 由 Bundler 自动生成。我认为这个问题可能是因为 Bundler 或 RVM ......这很奇怪。
                  猜你喜欢
                  • 2011-11-09
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-02-07
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-04-14
                  相关资源
                  最近更新 更多