小编Sta*_*ers的帖子

我可以在Sublime Text 2中保存折叠的代码吗?

有代码我可以忘记所有看起来不错:

不错

但是,关闭文件并重新打开它:

乱

如何折叠这段代码我多年都不会编辑(希望如此!)并将其隐藏起来无限期?

sublimetext2

7
推荐指数
1
解决办法
1889
查看次数

使用.htaccess,阻止用户访问资源目录,并允许源代码访问资源

如果我的问题不清楚,我会道歉,但我不太喜欢这个行话.通过'资源目录'我的意思是我的CSS,PHP脚本,图像,JavaScript等.

我在我的images目录中使用了一个.htaccess文件

deny from all
Run Code Online (Sandbox Code Playgroud)

去做这个.虽然这阻止了人们在浏览器中输入"www.example.com/images"并访问我的图像目录,但图像停止出现在我的网站上.

我认为这是因为.htaccess文件甚至拒绝我的源代码访问图像.如何让我的源代码访问目录?我每晚都有一个运行php脚本的cron作业.还需要允许cron作业访问scripts目录.

另外,使用.htaccess文件甚至是保护网站的最佳方式?

php security .htaccess

6
推荐指数
1
解决办法
2万
查看次数

在 irb 中,我如何“需要图书馆”

我正在关注一本名为“Ruby 初学者指南”的书,恐怕我不确定“需要图书馆”是什么意思。

在我的应用程序根目录中,我有一个名为 wordplay.rb 的文件,我知道如何在终端中启动 irb。但我不知道如何

'在文字游戏库中使用 irb 和 require'

ruby

6
推荐指数
1
解决办法
2763
查看次数

查看后Flash不会清除

这是我的创作动作.它创建一个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不知道要清除闪存.我可以强制清除闪光灯吗?

ruby-on-rails

6
推荐指数
1
解决办法
2688
查看次数

如何在错误的rspec规范之间清理我的数据库?

我已将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)

rspec ruby-on-rails guard database-cleaner factory-bot

6
推荐指数
1
解决办法
6587
查看次数

Can I log to test.log with rspec?

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吗?最好仔细检查工厂之类的……

ruby rspec ruby-on-rails

6
推荐指数
1
解决办法
1248
查看次数

生产日志是空白的?

我的美洲狮配置:

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)

configuration ruby-on-rails puma

6
推荐指数
1
解决办法
2799
查看次数

数组的未定义方法?

所以我有这个数据结构:

+[#<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)

ruby-on-rails

6
推荐指数
1
解决办法
8078
查看次数

用bcrypt发生了什么事?

这是来自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页面会这样说:

但即使这有弱点 - 攻击者可以通过相同的算法运行可能的密码列表,将结果存储在一个大数据库中,然后通过哈希查找密码:

PrecomputedPassword.find_by_hash(<unique gibberish>).password #=> "secret1"
Salts
Run Code Online (Sandbox Code Playgroud)

然后这就是我真正得到的:

The solution to …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails bcrypt

5
推荐指数
2
解决办法
3313
查看次数

Active Record运行所有查询两次

不知道为什么会在生产中发生这种情况:

更新这是来自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)

ruby-on-rails

5
推荐指数
1
解决办法
846
查看次数