fangtingting
12/17/2017 - 7:20 AM

rails目录结构

rails目录结构

app/

1、静态资源文件(assets) 2、模型(models)、控制器(controllers)和视图(views) 3、帮助方法(helpers) 4、邮件(mailers)

Helper是一些在视图中可以使用的小方法,用来产生较复杂的HTML。预设的Helper文件名称对应控制器,但不强制要求,在任意一个Helper文件中定义的方法,都可以在任何视图中使用。

bin(rails4以上)或者script(rails3以下)

存放运行程序的 rails 脚本,以及其他用来部署或运行程序的脚本。 要写脚本导入数据可以将脚本放在这里,脚本里加入下面代码(rails2版本需要这样,不知道高级版本是否需要?) require File.expand_path('../../config/environment', FILE)

rails3以上命令:rails server | rails console rails3运行脚本:rails runner 脚本名 rails2命令:ruby script/server | ruby script/console rails2运行脚本:ruby script/runner 脚本名

config/

配置文件目录:

1、application.rb:应用程序设置文件

2、boot.rb

3、database.yml:数据库配置文件(使用mongoid则删除该文件)

4、environment.rb:

5、routes.rb:路由配置文件

6、secrets.yml:rails4后有的文件,用于存放secret_key,代替了secret_token.rb

7、config/environments:多重环境设置

8、config/initializers:程序运行会加载该目录下的所有文件

backtrace_silencers.rb: 选择性移动异常追踪
cookies_serializer.rb: rails4以后新增
filter_parameter_logging.rb:从日志中移除password的参数,用[FILTERED] 替代,出于安全考虑
inflections.rb: 单复数转换。
mime_types.rb: response_to辨识并回应所请求的格式
secret_token.rb: rails3之前有存储加密cookies信息的token,rails4之后用secrets.yml
session_store.rb:默认session储存
wrap_parameters.rb: 参数封装

9、config/locales:多个语言环境设置

启动Rails程序(例如rails console或rails server),会在当前目录下找bin/rails或script/rails,如果当前目录下没有bin/rails或script/rails就会一直递归向上直到找到bin(script)/rails,所以在rails项目的根目录以及子目录下的任何地方都可以使用rails server或rails console命令。(不同版本rails代码有点区别)
程序启动会执行以下文件:
config/boot.rb 载入Bundler环境,这个文件由Rails自动产生,不需要修改;
application.rb 载入Rails gems和依赖的其它gems,接着设定Rails程序,执行config.ru文件;
environment.rb 执行所有启动程序(initializers),这个文件同样由Rails产生,不需要修改。

db/

存放数据库迁移文件 1、migrate:存放数据库迁移文件 2、schema.rb:文件不可修改,其目的是表示数据库的当前结构。部署新程序时,无需运行全部的迁移。直接加载数据库结构要简单快速得多。rake db:schema 3、seeds.rb:种子数据,使用迁移把数据存入数据库。rake db:seed

lib/

程序的扩展模块:一些共享的类或模块可以存放在该目录。在config/application.rb文件中​添加:config.autoload_paths+=%W("#{Rails.root}/lib"),将lib下的文件包含进来,autoload_path默认是app目录下的所有目录和文件。另外,Rake的任务,可存放在lib/tasks目录下。编写的rake任务必须以.rake作为文件扩展名。

log/

程序的日志文件。

public/

唯一对外开放的文件夹,存放静态文件和编译后的资源文件。对于web服务器来说,可以直接访问的文件目录。可以用于存放通用的images、stylesheets和javascripts (Rails 2.x)。

tmp/

临时文件,例如缓存,PID,会话文件。该目录下可以找到缓存内容、会话。通常情况下,rails会自动清除这些文件,但是如果偶然间出了错,可能需要手动删除旧文件。

vendor/

存放第三方代码。经常用来放第三方 gem。 在使用bundler安装gems插件时,也可以选择安装在该目录下。例如bundle install --path vendor/bundle。 写插件可以使用rails plugin插件名,插件自动放入vendor/plugins目录下。插件的安装:rails plugin install git://github.com/newrelic/rpm.git # 放到vendor/plugins下面。Rails3以后,已经不建议使用插件。而应该把插件做成gem来安装。在config/application.rb中添加:config.plugins = [ :exception_notification, :ssl_requirement, :all ] 来加载插件。

Gemfile和Gemfile.lock

设置Rails程序所依赖的Gems (一旦用bundle install安装后,会生成Gemfile.lock)

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

Rakefile

用来载入可以被终端执行的Rake任务。保存并加载可在命令行中执行的任务。任务在 Rails 的各组件中定义。如果想添加自己的任务,不要修改这个文件,把任务保存在 lib/tasks 文件夹中。

config.ru

用来启动Rails程序的Rack设置文件。基于 Rack 服务器的程序设置,用来启动程序。