在哪里定义 Rails 应用程序的版本号 [关闭]

Posted

技术标签:

【中文标题】在哪里定义 Rails 应用程序的版本号 [关闭]【英文标题】:Where to define Rails app's version number [closed] 【发布时间】:2012-06-27 07:28:48 【问题描述】:

关于如何/在哪里指定应用程序的版本号是否有任何约定?

例如,对于 ruby​​ gem,lib/mygem/version.rb 是通常用于该目的的文件。

我的猜测是像这样创建config/version.rb 文件:

module MySite
  VERSION = "0.0.4"

  # or in MySite::Application class
  # 
  # class Application
  #   VERSION = "0.0.4"
  # end
end

【问题讨论】:

看这个:***.com/a/6178378/1352240 您可以按照我之前的回答执行此操作:***.com/a/23135266/2881964 【参考方案1】:

我会回答我自己的问题,我找不到更好的答案。

由于 Rails 应用程序基本上是 MySite::Application 我认为应用程序的版本应该由 MySite::Application::VERSION 访问所以创建:

config/initializers/version.rb

module MySite
  class Application
    VERSION = "0.0.4"
  end
end

config/version.rb 并要求config/application.rb提供此文件

【讨论】:

+ 要走 config/version.rb 路线,请记住将 require File.expand_path('../version', __FILE__) 放在 config/application.rb 的末尾 这是个好主意,但我将其设置在 config/application.rb 文件中,因为该文件已经声明了 MySite::Application 类。如果您需要重命名您的应用程序,您实际上只更改了一处。最后,从初始化程序设置版本对我来说听起来很奇怪。 可能直接在模块上定义 MySite::VERSION 会更符合我们已经为 gem 所做的工作。【参考方案2】:

我用初始化器将我自己的版本添加到配置类中:

app_version.rb

class Configuration
  class << self
    attr_accessor :app_version
  end
  @app_version = 0.72
end

在应用内,我可以拉取版本:

@app_version = Configuration.app_version

不确定为什么要使用该版本,但我经常使用版本控制,以便查看特定版本的代码是否正在实际运行。在这种情况下,我需要将每个代码修订版本都反映为一个新版本,因此我在我的代码中使用 Git 版本,并且通常只显示它的前几个字符,因为这可能足以识别它。

@git_version = `git show --pretty=%H`[0..39]

【讨论】:

这太酷了。我如何从视图中调用它?我错过了一些东西。 @version = `git log --oneline | head -1` 也可以工作 - 对我有用 ;) 只要你擅长将 *nix 命令潜入你的代码,因为这在windoze国家不会很好地传播:D跨度>

以上是关于在哪里定义 Rails 应用程序的版本号 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在哪里存储 Rails 应用程序的版本

方法“is_admin”在哪里?在我的 Rails 应用程序中定义?

Rails + 延迟作业:存储自定义作业类的正确位置在哪里?

ruby 使用rake任务管理Rails应用程序版本号(包括git-flow支持)

Rails 还是 Grails? [关闭]

Rails 3 中的时间格式规则放在哪里?