bundle install --without production 不安装production中的gem./configure && make && sudo make install 把源代码编译成可执行的程序$ bundle exec rake -T db 可查看所有与数据库相关的任务,rake db:就是用来管理数据库的,是数据库不是表rake -T 查看所rake 命令heroku run rake db:migratebundle exec rake db:migrate VERSION=0 数据库回退到指定版本,0就是数据库最开始的状态超链接show <%= link_to user.name, user %>delete <%= link_to "delete", user, method: :delete, data: { confirm: "You sure?" } %>edit <%= link_to "Settings", edit_user_path(current_user) %>生产环境rails s --environment productionbundle exec rake db:migrate RAILS_ENV = productionbundle exec rake db:migrate:reset 删除数据库中数据调试debugger测试页面内容测试(view),数据库数量/内容测试(model),controller测试先单元测试,测试单个功能。再从页面考虑,根据行为,集成测试rails g integration_test signuprake test:integrationbundle exec rake test TEST=test/integration/users_login_test.rbbundle exec rake test TEST=test/integration/users_login_test.rb TESTOPTS="--name test_login_with_valid_information"测试中cookies中不能使用符号键,但可以实用字符串键 cookies[:key]会返回nil cookies['key']会返回正确的值测试中可以实用assigns获取controller中的实例变量,比如@user,test中assgins(:user)安全随机数SecureRandom.urlsafe_base64 返回A-Z a-z 0-9 -_ 长度为22的随机字符串,每一位有64种可能cookiecookies[:remember_token] = { value: remember_token, expires: 20.years.from_now.utc }cookies.permanent[:remember_token] = remember_token permanent rails会自动将时间设为20年之后cookies.signed[:user_id] = user.id 存入浏览器前,安全加密cookiecookies.permanent.signed[:user_id] = user.idUser.find_by(id: cookies.signed[:user_id])BCrypt::Password.new(remember_digest).is_password?(remember_token)辅助方法1.year.from_now 10.weeks.ago 1.kilobyte 5.megabytes类方法def self.new_tokenSecureRandom.urlsafe_base64endclass User < ActiveRecord::Baseclass << selfdef digest(string)cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :BCrypt::Engine.costBCrypt::Password.create(string, cost: cost)enddef new_tokenSecureRandom.urlsafe_base64endendActive Recordnew_record? 检测对象是新创建,还是已经存在于数据库路由创建是post,编辑是patch。 构建form_for(@user)表单,根据@user.new_record?判断该发送什么请求局部模板rails将@users组成user对象列表,传给render后,rails会自动遍历这个列表,然后使用局部视图_user.html.haml渲染每个对象一。
- <%= render @users %>
- <% @users.each do |user| %><%= render user %><% end %>