`
fantaxy025025
  • 浏览: 1312725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Rails源码阅读(12)叫Rails的模块module_Rails常量使用

 
阅读更多

 

The module nams "Rails"

 

基本都是一些类方法,本来也是作为服务类的。源码如下:

 

  class << self
    def application
      @@application ||= nil
    end

    def application=(application)
      @@application = application
    end

    # The Configuration instance used to configure the Rails environment
    def configuration
      application.config
    end

    def initialize!
      application.initialize!
    end

    def initialized?
      @@initialized || false
    end

    def initialized=(initialized)
      @@initialized ||= initialized
    end

    def logger
      @@logger ||= nil
    end

    def logger=(logger)
      @@logger = logger
    end

    def backtrace_cleaner
      @@backtrace_cleaner ||= begin
        # Relies on Active Support, so we have to lazy load to postpone definition until AS has been loaded
        require 'rails/backtrace_cleaner'
        Rails::BacktraceCleaner.new
      end
    end

    def root
      application && application.config.root
    end

    def env
      @_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
    end

    def env=(environment)
      @_env = ActiveSupport::StringInquirer.new(environment)
    end

    def cache
      RAILS_CACHE
    end

    # Returns all rails groups for loading based on:
    #
    # * The Rails environment;
    # * The environment variable RAILS_GROUPS;
    # * The optional envs given as argument and the hash with group dependencies;
    #
    # == Examples
    #
    #   groups :assets => [:development, :test]
    #
    #   # Returns
    #   # => [:default, :development, :assets] for Rails.env == "development"
    #   # => [:default, :production]           for Rails.env == "production"
    #
    def groups(*groups)
      hash = groups.extract_options!
      env = Rails.env
      groups.unshift(:default, env)
      groups.concat ENV["RAILS_GROUPS"].to_s.split(",")
      groups.concat hash.map { |k,v| k if v.map(&:to_s).include?(env) }
      groups.compact!
      groups.uniq!
      groups
    end

    def version
      VERSION::STRING
    end

    def public_path
      application && application.paths["public"].first
    end
  end
 这里面的很多方法是服务的,比如查看配置,查看版本,等等。

 

重点说几个常用的:

* application

 1.9.3p194 :001 > Rails.application.class

 => AppName::Application

 

* 查看Rails的配置

 

    # The Configuration instance used to configure the Rails environment
    def configuration
      application.config
    end

 

1.9.3p194 :006 > Rails.configuration.class

 => Rails::Application::Configuration 

 

1.9.3p194 :008 > Rails.configuration.session_store

 => ActionDispatch::Session::CookieStore

还有很多配置,随时补充吧,在这里查看配置很方便。

 

*cache 查看cache类型和配置

1.9.3p194 :010 >   Rails.cache

 => #<ActiveSupport::Cache::FileStore:0x000000032fa898 @options={}, @cache_path="/mnt/ubuntu-64-disk-2/home

    def cache
      RAILS_CACHE
    end

 这里的cache居然还是个常量。

 

Rails::Info

  autoload :Info, 'rails/info'

 这个类显示了很多Rails的基本信息,很多Rails模块的很多用法,可以参考这个类是怎么使用的。

1.9.3p194 :001 > Rails::Info

   (3.1ms)  SELECT `schema_migrations`.`version` FROM `schema_migrations` 

 => About your application's environment

Ruby version              1.9.3 (x86_64-linux)

RubyGems version          1.8.24

Rack version              1.4

Rails version             3.2.13

JavaScript Runtime        therubyracer (V8)

Active Record version     3.2.13

Action Pack version       3.2.13

Active Resource version   3.2.13

Action Mailer version     3.2.13

Active Support version    3.2.13

Database schema version   20140613094339 

 

  autoload :InfoController, 'rails/info_controller'

rails模块中引入的这个类,代码很简单:

class Rails::InfoController < ActionController::Base
  def properties
    if consider_all_requests_local? || request.local?
      render :inline => Rails::Info.to_html
    else
      render :text => '<p>For security purposes, this information is only available to local requests.</p>', :status => :forbidden
    end
  end

  protected

  def consider_all_requests_local?
    Rails.application.config.consider_all_requests_local
  end
end

 就是把Rails的Info信息在浏览器显示一下。 

可以看出这里是用了ActionController,那么我们认为,配置了路由,就可以访问了,不知rails自带的默认生成的代码是不是配置了此项。

我们来配置一下路由:

  get 'rails/info/properties' => 'rails::info#properties' #testing rails info

 好了在浏览器访问一下:

http://nihao.com:3000/rails/info/properties

果然是可以看到一个比较友好的表格,显示rails的详细信息。

 

+

+

+

0

-

-

-

 

分享到:
评论

相关推荐

    Rails项目源代码

    Rails使用ActiveRecord作为ORM,它使得Ruby类可以直接与数据库表进行交互。在这个项目中,`User`和`Image`模型可能会与数据库中的相应表关联,通过定义属性和关系,如`has_many :images`表示一个用户可以拥有多个...

    rails-exporter-源码.rar

    《Rails Exporter 源码解析》 Rails Exporter 是一个用于 Rails 应用程序的开源工具,主要用于数据导出功能。源码分析将帮助我们深入理解其内部工作原理,以便更好地利用它来优化我们的应用。 一、Rails 框架基础 ...

    ruby on rails 教程源码

    这个“ruby on rails 教程源码”很可能是为了辅助学习者深入理解Rails的工作原理和最佳实践,通过实际操作来提升技能。 在Rails中,`sample_app-master`可能是一个示例应用程序的主目录,它包含了完整的项目结构。...

    Rails进行敏捷Web开发(所有版本的源码rails3.0-4.0)

    在“Rails进行敏捷Web开发(所有版本的源码rails3.0-4.0)”中,包含了Rails从3.0到4.0各个主要版本的源代码,这些版本的变迁反映了Rails框架在不同阶段的发展和改进。 1. Rails 3.0: Rails 3是重大升级,引入了...

    Rails101_by_rails4.0

    《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...

    bhl_rails_solr-源码.rar

    《深入解析bhl_rails_solr源码》 在当今的Web开发领域,Rails框架以其高效、简洁的设计理念,深受开发者喜爱。同时,Solr作为一款强大的全文搜索引擎,被广泛应用于各类复杂的数据检索场景。当这两者结合时,便诞生...

    ruby_on_rails 源代码上

    在学习Ruby on Rails之前,首先需要理解Ruby的基本概念,如变量、数据类型、控制结构(如if语句、循环)、类与对象、方法定义、模块和块等。 2. **Rails框架** Rails框架提供了一套完整的工具集,用于快速构建Web...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    Ruby-Webpacker使用Webpack在Rails中管理类似app的JavaScript模块

    Webpacker是Ruby on Rails框架中一个非常重要的工具,它允许开发者使用Webpack来管理和打包应用程序中的JavaScript模块。Webpacker的引入,使得Rails应用可以利用Webpack的强大功能,如模块化、热加载、代码分割和树...

    基于ruby on rails开发示例源码

    本示例源码提供了使用Ruby on Rails进行实际项目开发的具体实践,帮助开发者深入理解Rails的工作原理和最佳实践。 在Rails中,`模型`负责处理数据和业务逻辑,`视图`负责展示用户界面,而`控制器`则作为模型和视图...

    Ruby on Rails源代码

    9. **中间件**:Rails使用中间件栈来处理HTTP请求,每个中间件都有机会在请求到达应用和离开应用时执行操作。通过研究`config/application.rb`中的`config.middleware`,你可以学习如何添加、移除和调整中间件。 10...

    agile_web_development_with_rails_3rd_edition.9994652073.pdf

    《敏捷Web开发与Rails》第三版是一本全面且深入的Ruby on Rails教程,适合那些希望利用敏捷开发原则和Rails框架构建高质量Web应用的开发者阅读。通过学习本书,读者不仅可以掌握Rails的基本操作,还能学会如何运用...

    RestFul_Rails_Dev_pdf_v_0.1.zip

    通过阅读这本书的翻译版,开发者不仅能学习到RESTful设计模式,还能掌握Rails框架下实现这些模式的具体方法和技术。无论是初学者还是经验丰富的Rails开发者,都能从中受益匪浅,提升自己的Web开发技能。

    rails 的安装

    标题 "rails 的安装" 涉及到的是Ruby on Rails框架的安装过程,这是一个用于构建Web应用程序的开源框架。Rails是基于Ruby编程语言,它强调DRY(Don't Repeat Yourself)原则,提供了一种优雅的方式来组织和编写代码...

    inspinia admin - v2.5 Rails_Full_Version

    12. **Rails最佳实践**:学习并遵循Rails社区推崇的最佳实践,如命名规范、代码结构和风格,以提高代码可读性和维护性。 当你解压"Rails_Full_Version"并开始开发时,可以参考这些知识点逐步构建和定制你的后台管理...

    ruby on rails社区网站开发源码

    Ruby on Rails,简称Rails,是由David Heinemeier Hansson创建的一个开源Web应用程序框架,它基于Ruby编程语言。这个框架以其MVC(Model-View-Controller)架构、约定优于配置(Convention over Configuration)的...

    inspinia_admin_v2.5_Rails_Full_Version

    2. **Rails引擎**:可能包含了Rails引擎的实现,允许快速集成到现有的Rails项目中,提供即插即用的功能模块。 3. **示例应用**:可能包含一个示例应用,展示如何将模板与Rails框架结合使用,帮助开发者理解如何启动...

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板.zip

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...

    angular_rails_csrf-源码.rar

    深入研究这个源码,我们可以学到如何在Angular和Rails集成项目中有效地实施CSRF防护,了解如何在前端获取和使用CSRF令牌,以及如何在后端验证这些令牌。这不仅有助于提高应用的安全性,还能让我们对SPA开发过程中的...

    shopping_card_rails-源码.rar

    《购物车实现——深入解析"shopping_card_rails"源码》 在软件开发中,购物车功能是电子商务网站的核心组成部分,它允许用户选择商品并进行结算。本篇文章将深入探讨"shopping_card_rails"源码,揭示其在实现购物车...

Global site tag (gtag.js) - Google Analytics