有代码我可以忘记所有看起来不错:
但是,关闭文件并重新打开它:
如何折叠这段代码我多年都不会编辑(希望如此!)并将其隐藏起来无限期?
如果我的问题不清楚,我会道歉,但我不太喜欢这个行话.通过'资源目录'我的意思是我的CSS,PHP脚本,图像,JavaScript等.
我在我的images目录中使用了一个.htaccess文件
deny from all
Run Code Online (Sandbox Code Playgroud)
去做这个.虽然这阻止了人们在浏览器中输入"www.example.com/images"并访问我的图像目录,但图像停止出现在我的网站上.
我认为这是因为.htaccess文件甚至拒绝我的源代码访问图像.如何让我的源代码访问目录?我每晚都有一个运行php脚本的cron作业.还需要允许cron作业访问scripts目录.
另外,使用.htaccess文件甚至是保护网站的最佳方式?
我正在关注一本名为“Ruby 初学者指南”的书,恐怕我不确定“需要图书馆”是什么意思。
在我的应用程序根目录中,我有一个名为 wordplay.rb 的文件,我知道如何在终端中启动 irb。但我不知道如何
'在文字游戏库中使用 irb 和 require'
这是我的创作动作.它创建一个Message的新实例,并使用模型验证进行检查.
然后有一个简单的if else循环,如果模型验证已经完成则发送消息,如果他们想要发送另一个,则呈现"新"视图.如果未满足模型验证,则只需再次呈现"新"视图.
如果消息成功,则闪存哈希还会填充相关信息,成功消息和警报消息.
def create
@message = Message.new(message_params)
if @message.valid?
Contactform.contact(@message.name, @message.town, @message.email, @message.content).deliver
flash[:success] = "Sent message"
render 'new'
else
flash[:alert] = "Alert"
render 'new'
end
end
Run Code Online (Sandbox Code Playgroud)
但是,我不认为我做得对,因为消息留在闪光灯中.他们被查看一次后就不会被清除.
我应该如何确保闪存清除,应该是什么?
更新
这就是错误的产生方式.我成功发送了一条消息,然后我回到了"新"视图,我收到了一个'成功'的闪存.我尝试发送错误消息,然后我回到"新"视图,我收到了之前的'成功'闪光和'警报'闪光.对用户来说非常困惑!
第二个我浏览到另一个页面,两个闪烁消失,但这是我认为的问题.与返回同一页面有关,因此Rails不知道要清除闪存.我可以强制清除闪光灯吗?
我已将database_cleaner gem添加到我的rails应用程序中,以便在规范之间清理我的数据库.这是我对database_cleaner的当前配置,位于spec/spec_helper.rb
:
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
DatabaseCleaner.start
DatabaseCleaner.clean
end
config.before(:each) do
DatabaseCleaner.clean
end
config.after(:each) do
DatabaseCleaner.clean
end
config.after(:suite) do
DatabaseCleaner.clean
end
Run Code Online (Sandbox Code Playgroud)
现在,只要运行的每个最后一个规范通过或失败,此配置都可以正常工作.
但是,如果出现错误(rspec不会给你一个E
像minitest一样的好东西,它会抛出这样的东西:
09:17:32 - INFO - Running: spec
/usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/gems/1.9.1/gems/activerecord-4.0.1/lib/active_record/validations.rb:57:in `save!': Validation failed: Email has already been taken (ActiveRecord::RecordInvalid)
Run Code Online (Sandbox Code Playgroud)
),数据库没有清理!错误之前的规范中的残留数据保留在数据库中.我想这是因为database_cleaner不会将错误的规范视为完成,因此不会清理数据库.
现在,在您再次运行规范之前,这并不会造成任何伤害.然后残差数据会产生类似于此的错误:
09:17:32 - INFO - Running: spec
/usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/gems/1.9.1/gems/activerecord-4.0.1/lib/active_record/validations.rb:57:in `save!': Validation failed: Email has already been taken (ActiveRecord::RecordInvalid)
Run Code Online (Sandbox Code Playgroud)
绕过这个错误很简单; 运行rails_env=test rake db:reset
或发射了你的数据库外壳和排空使用SQL语句中的相关表格将清除该数据,并允许顺利要运行的规范.
然而,这变得很烦人.在我的任何规格中都有一个错误的角色(任何让它变得错误而不是失败的东西)会导致我的整个测试工作流程堵塞,就像自动武器的发射机制一样!
您对database_cleaner有什么建议?您是否有任何允许清理数据库的示例配置,即使在错误测试的情况下?
我正在使用后卫来运行我的工厂女孩进一步增强的rspecs:
的Gemfile:
source 'https://rubygems.org'
group :development do
gem 'capistrano' …
Run Code Online (Sandbox Code Playgroud) Here's a simple spec just to test this:
require 'spec_helper'
describe A_controller do
before do
@cat_noise = "Meow"
end
it "should do nothing because it's empty and I created it just to test logger!" do
logger.info "---------- Here comes a cat noise -----------"
logger.info @cat_noise
logger.info "-----------There goes a cat noise -----------"
end
end
Run Code Online (Sandbox Code Playgroud)
And here's my log level configuration for the test environment:
config.log_level = :info
Run Code Online (Sandbox Code Playgroud)
但是,我与test.log
文件中的猫声无关。我可以做?会出现在test.log
吗?最好仔细检查工厂之类的……
我的美洲狮配置:
path = Dir.pwd + "/tmp/puma/"
threads 0,20
environment "production"
daemonize true
drain_on_shutdown true
bind "unix://" + path + "socket/puma.sock"
pidfile path + "pid/puma.pid"
state_path path + "pid/puma.state"
Run Code Online (Sandbox Code Playgroud)
我的环境/ production.rb
MyApp::Application.configure do
config.log_level = :debug
end
Run Code Online (Sandbox Code Playgroud)
我启动我的服务器:
starkers@ubuntu:~/Desktop/myspp$ pumactl -F config/puma.rb start
=> Booting Puma
=> Rails 4.0.2 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:
* …
Run Code Online (Sandbox Code Playgroud) 所以我有这个数据结构:
+[#<Folder id: 1, name: "mollitia", parent_id: nil, user_id: 1, created_at: "2014-06-27 16:00:59", updated_at: "2014-06-27 16:00:59">,
+ #<Folder id: 2, name: "porro", parent_id: 1, user_id: 1, created_at: "2014-06-27 16:00:59", updated_at: "2014-06-27 16:00:59">,
+ #<Folder id: 3, name: "omnis", parent_id: 2, user_id: 1, created_at: "2014-06-27 16:00:59", updated_at: "2014-06-27 16:00:59">]
Run Code Online (Sandbox Code Playgroud)
self.ancestors
我可以把它的名字归还吗?
def pwd
self.ancestors.pluck(:name)
end
Run Code Online (Sandbox Code Playgroud)
以上结果
undefined method `pluck' for #<Array:0x007ff4da780290>
Run Code Online (Sandbox Code Playgroud)
更新
令人敬畏的结构打印:
[
[0] #<Folder:0x007fd2946a5f18> {
:id => 3,
:name => "blanditiis",
:parent_id => 2,
:user_id => 1,
:created_at => …
Run Code Online (Sandbox Code Playgroud) 这是来自github页面:
require 'bcrypt'
class User < ActiveRecord::Base
# users.password_hash in the database is a :string
include BCrypt
def password
@password ||= Password.new(password_hash)
end
def password=(new_password)
@password = Password.create(new_password)
self.password_hash = @password
end
end
Run Code Online (Sandbox Code Playgroud)
看来要访问密码方法,您需要从create方法中将其作为属性调用:
@user.password = user_params[:password]
@user.save
Run Code Online (Sandbox Code Playgroud)
好的?但现在储存的盐在哪里?我根本就没有得到它,这又如何远程安全?
要检索散列密码,您需要以下方法:
def password
@password ||= Password.new(password_hash)
end
Run Code Online (Sandbox Code Playgroud)
并将其称为属性:
if @user.password == params[:password]
give_token
else
false
end
Run Code Online (Sandbox Code Playgroud)
所以看来一切都在没有盐的情况下......它是如何做到的?
这意味着我现在只需要在我的数据库中使用一列来处理密码,对吧?password
或者password_hash
代替password_salt | password_hash
?
那么为什么github页面会这样说:
但即使这有弱点 - 攻击者可以通过相同的算法运行可能的密码列表,将结果存储在一个大数据库中,然后通过哈希查找密码:
Run Code Online (Sandbox Code Playgroud)PrecomputedPassword.find_by_hash(<unique gibberish>).password #=> "secret1" Salts
然后这就是我真正得到的:
Run Code Online (Sandbox Code Playgroud)The solution to …
不知道为什么会在生产中发生这种情况:
更新这是来自rails控制台:
User.all
User Load (0.5ms) SELECT "users".* FROM "users"
User Load (0.5ms) SELECT "users".* FROM "users"
2.0.0-p451 :005 > User.first.destroy
User Load (0.6ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
User Load (0.6ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
(0.2ms) BEGIN
(0.2ms) BEGIN
Discussion Load (60.4ms) SELECT DISTINCT "discussions".* FROM "discussions" INNER JOIN "followers" ON "discussions"."id" = "followers"."discussion_id" WHERE "followers"."user_id" = $1 [["user_id", 1]]
Discussion Load (60.4ms) SELECT DISTINCT "discussions".* FROM …
Run Code Online (Sandbox Code Playgroud) rspec ×2
ruby ×2
.htaccess ×1
bcrypt ×1
factory-bot ×1
guard ×1
php ×1
puma ×1
security ×1
sublimetext2 ×1