Devise在docker中找不到`Warden :: Proxy`

时间:2017-11-29 14:56:42

标签: ruby-on-rails docker devise docker-compose warden

我找到了一些关于这个问题的答案。从Docker容器加载Web时出现此错误。

我尝试了这里的建议

Helper Devise: could not find the `Warden::Proxy` instance on request environment但没有成功

这是我的Dockerfile

FROM ruby:2.4.0
ENV PHANTOM_JS="phantomjs-2.1.1-linux-x86_64"

RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - && \
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
    apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y rake  less rsync locales build-essential chrpath libpq-dev libxml2-dev libxslt1-dev libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev qt5-default libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools gstreamer1.0-x nodejs yarn pdftk && \
    curl -L -O https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 && \
    tar xvjf $PHANTOM_JS.tar.bz2 && \
    mv $PHANTOM_JS /usr/local/share && \
    ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin && \
    mkdir -p /root/.phantomjs/2.1.1/x86_64-linux/bin && \
    ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /root/.phantomjs/2.1.1/x86_64-linux/bin/phantomjs && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN sed -i "s/^#\ \+\(en_US.UTF-8\)/\1/" /etc/locale.gen
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ENV LANGUAGE en_US:en
ENV RAILS_ENV=development
ENV BUNDLE_PATH /box

RUN mkdir /app
WORKDIR /app

COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY package.json ./
RUN yarn install

COPY . .

CMD puma -C config/puma.rb

当我创建数据库的图像(postgresql)和rails服务器的图像时,我有一个docker composer文件。

当所有容器都已加载时,我会转到我的浏览器,然后在终端中找到它:

  

故障安全响应期间出错:Devise找不到   您的请求环境中的Warden::Proxy实例。确保这一点   你的应用程序正在按预期加载Devise和Warden   中间件堆栈中存在Warden::Manager中间件。如果   你在一个测试中看到了这一点,确保你的测试是   要么执行Rails中间件堆栈,要么执行测试   使用Devise::Test::ControllerHelpers模块注入   request.env['warden']对象。

注意:我在本地和Docker中使用Ruby 2.4.0

0 个答案:

没有答案